Created
July 22, 2014 08:24
-
-
Save object/a7139800bd8e9fa8358c to your computer and use it in GitHub Desktop.
Serilog log4net sink problem
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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