[英]Serilog logs to console but not to file
我有以下記錄器配置和相關的類,如下所示。 預期的日志消息如下:
2019-03-06 19:49:56.417 +05:30 [INFORMATION] [Main] Start
2019-03-06 19:49:56.435 +05:30 [INFORMATION] [Test1] Test1 logg
我在控制台中看到了兩條日志消息。 但我只看到文件中的第一個日志。
namespace SerilogTest
{
public static class MyLogger
{
public static ILogger getLogger(String className)
{
string logTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u}] [{SourceContext}] {Message}{NewLine}{Exception}";
Log.Logger = new LoggerConfiguration()
.WriteTo.Console(outputTemplate: logTemplate)
.WriteTo.File("log.txt", outputTemplate: logTemplate)
.CreateLogger()
.ForContext("SourceContext", className);
return Log.Logger;
}
}
public class Program
{
private static ILogger Log = MyLogger.getLogger("Main");
private static void Main(String[] args)
{
Log.Information("Start");
Test1 t1 = new Test1();
Console.ReadKey();
}
}
public class Test1
{
private static ILogger Log = MyLogger.getLogger(typeof(Test1).Name);
public Test1()
{
Log.Information("Test1 logg");
}
}
}
謝謝
您需要啟用多進程共享日志文件,將shared
設置為true
.WriteTo.File("log.txt", outputTemplate: logTemplate, shared: true)
每次需要記錄時也不需要創建記錄器,只需在應用程序啟動時創建一次,並在應用程序的任何位置使用它(請查看下面的示例)。
public static class MyLogger
{
public static void CreateLogger()
{
String logTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u}] [{SourceContext}] {Message}{NewLine}{Exception}";
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Console(outputTemplate: logTemplate)
.WriteTo.File("log.txt", outputTemplate: logTemplate)
.CreateLogger();
}
}
class Program
{
static void Main(String[] args)
{
MyLogger.CreateLogger();
Log.ForContext("SourceContext", "Main").Information("Start");
Test1 t1 = new Test1();
Console.ReadKey();
}
}
class Test1
{
public Test1()
{
Log.ForContext("SourceContext", typeof(Test1).Name).Information("Test1 logg");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.