Skip to content

Instantly share code, notes, and snippets.

@object
Created July 22, 2014 08:24
Show Gist options
  • Save object/a7139800bd8e9fa8358c to your computer and use it in GitHub Desktop.
Save object/a7139800bd8e9fa8358c to your computer and use it in GitHub Desktop.
Serilog log4net sink problem
1. Create console app.
2. Install log4net, Serilog and Serilog.Sinks.log4net NuGet packages.
3. Add log4net.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net debug="false">
<appender name="XmlRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%property{LogRoot}/DsItsLog" />
<appendToFile value="true" />
<datePattern value=".yyyy-MM-dd'.xml'" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.XmlLayoutSchemaLog4j">
<locationInfo value="true"/>
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="XmlRollingFileAppender" />
</root>
</log4net>
</configuration>
4. Change the Program.cs as follows:
class Program
{
static void Main(string[] args)
{
var log4netLogger = RegisterLog4Net();
log4netLogger.Debug("This is a log4net message");
var serilogLogger = RegisterSerilog();
serilogLogger.Debug("This is a Serilog message with log4net sink");
}
private static ILog RegisterLog4Net()
{
GlobalContext.Properties["LogRoot"] = @"./logs";
var log4netConfigFile = AppDomain.CurrentDomain.BaseDirectory + @"\log4net.config";
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(log4netConfigFile));
var logger = LogManager.GetLogger(Assembly.GetExecutingAssembly().GetName().Name);
return logger;
}
private static ILogger RegisterSerilog()
{
var logger = new LoggerConfiguration()
.WriteTo.ColoredConsole()
.WriteTo.Log4Net()
.CreateLogger();
Serilog.Debugging.SelfLog.Out = Console.Error;
return logger;
}
}
5. Compile and run the program. There will be a log message from log4netLogger, but no messages from serilogLogger.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment