2016-09-29 5 views
1

の後に新しいファイルを作成します。ローリングファイルシンクを使用しています。Serilogは2 KB

後は初期の私のコードです:ここでは

Serilog.Log.Logger = new LoggerConfiguration() 
      .WriteTo.RollingFile(@"L:\logs\Api-{Date}.txt", fileSizeLimitBytes: null) 
      .CreateLogger(); 

はログインするラインである:

Log.Information(message); 

しかし、2キロバイトの後に、それは新しいファイルを作成します。

私は何がうまくいかないのか分かりません。

更新

これは私のロガークラスです:

public class Logger 
{ 
    public Logger() 
    { 
     Serilog.Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Verbose() 
      .WriteTo.RollingFile(@"L:\logs\Api-{Date}.txt", fileSizeLimitBytes: null) 
      .CreateLogger(); 
    } 

    public void Log(LogRequestParameters logRequestParameters, LoggingLevels loggingLevel) 
    { 
     var message = JsonConvert.SerializeObject(logRequestParameters); 

     switch (loggingLevel) 
     { 
      case LoggingLevels.Verbose: 
       Serilog.Log.Verbose(message); 
       break; 

      case LoggingLevels.Debug: 
       Serilog.Log.Debug(message); 
       break; 

      case LoggingLevels.Information: 
       Serilog.Log.Information(message); 
       break; 

      case LoggingLevels.Warning: 
       Serilog.Log.Warning(message); 
       break; 

      case LoggingLevels.Error: 
       Serilog.Log.Warning(message); 
       break; 

      case LoggingLevels.Fatal: 
       Serilog.Log.Fatal(message); 
       break; 
     } 
    } 
} 

これは私の呼び出し元クラスです:

public class Caller 
{ 
    logRequestParameters.DateTime = DateTime.Now.ToString(); 
    logRequestParameters.Level = "Debug"; 
    logRequestParameters.MachineName = Environment.MachineName; 
    logRequestParameters.Type = "Request"; 
    logRequestParameters.Request = request; 

    Logger logger = new Logger(); 

    logger.Log(logRequestParameters, LoggingLevels.Information); 
} 
+0

私は上記のコードをとり、 'Log.Information(new String( 'x'、1024))'を5回呼び出して、5Kのファイルを1つ作成しました。アプリケーションの詳細とログの記録方法を教えてください。表示されたコードは、2k後にファイルを分割しません(Serilog 2.2.1を使用)。 – PatrickSteele

答えて

1

コードは、各イベントの新しいロガーインスタンスを作成しています。 単一のロガーを作成し、ロギングコールごとに使用する必要があります。

Serilogロガーのライフサイクルに関する詳細は、in the documentationです。

+0

ありがとう!しかし、どのようにして単一のロガーを作成し、アプリケーション全体で使用することができますか? 私の現在のアプリケーションでは、ロガークラスを作成しました。私は別の場所でこれを使いたい。さらに、ファイルパスと最小レベルを入力とするコンストラクタを1つ作成したいと考えています。異なる目的のために、私は別のファイルにログインすることができます。 – user1780538

関連する問題