Stefan
Stefan
CC#
Created by Stefan on 1/10/2025 in #help
EventLogAppender and log4net
Hey there, I was looking into configuring Windows event logging for an ASP.NET Core application (running on net8.0) with log4net. In brief, my log4net.config configuration looks something like this:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="MyOrg.WebApi.Logging.NxPatternLayout">
</layout>
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<!--<logName value="MyOrg" /> -->
<applicationName value="MyOrg.Backend" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message %exception%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="Console" />
<appender-ref ref="EventLogAppender" />
</root>
<logger name="EventLogger">
<level value="ERROR" />
<appender-ref ref="EventLogAppender" />
</logger>
</log4net>
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="MyOrg.WebApi.Logging.NxPatternLayout">
</layout>
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<!--<logName value="MyOrg" /> -->
<applicationName value="MyOrg.Backend" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message %exception%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="Console" />
<appender-ref ref="EventLogAppender" />
</root>
<logger name="EventLogger">
<level value="ERROR" />
<appender-ref ref="EventLogAppender" />
</logger>
</log4net>
I am using DI, so somewhere in my startup code I hook up log4net with options.AddLog4Net("log4net.config");. This works fine with everything except the Windows event logger. I registered a new source via PowerShell prior to running the application with:
New-EventLog -Source MyOrg.Backend -LogName MyOrg
New-EventLog -Source MyOrg.Backend -LogName MyOrg
Also tried variants of this (-LogName Application, etc.) to no avail. An older SO answer suggest that this is not working for .NET applications anymore (so only .NET Framework and .NET Standard compatible versions), see also: https://stackoverflow.com/questions/61639853/c-sharp-windows-event-viewer I looked at the source code here to confirm that: https://github.com/apache/logging-log4net/blob/master/src/log4net/log4net.csproj#L22C23-L22C44 The project is targeting .NET Framework 4.62 and .NET Standard 2.0. So my takeaway is, that .NET (Core) does not support Windows Event Logs?
4 replies
CC#
Created by Stefan on 5/29/2024 in #help
OData Dictionary Response
Since I am not very familiar with OData yet, I have resorted to asking this question here: Suppose I have a model with a property
public Dictionary<string,string> Data { get; set; }
public Dictionary<string,string> Data { get; set; }
Using OData, the response looks like this:
Result: {
Keys: [ /* all keys in list form here */ ],
Values: [ /* all values in list form here */ ]
}
Result: {
Keys: [ /* all keys in list form here */ ],
Values: [ /* all values in list form here */ ]
}
though I expected it to be serialized like this:
Result: {
"key1": "value1",
"key2": "value2",
// etc.
}
Result: {
"key1": "value1",
"key2": "value2",
// etc.
}
How can I turn this around?
1 replies