2009-10-28 22 views
24

私はログフレームワークとしてNlogを使用していますので、必要な方法でファイルをアーカイブする方法が見つかりません。私はロギングがロギングファイル名で行われた日付を知りたいと思います。
Ex 2009-10-01 00:00 -> 2009-10-01:23:59から発生するすべてのログは、Log.2009-10-01.logに置く必要があります。しかし、この日のすべてのログは、テールリングなどのためにLog.logに配置する必要があります。Nlogをログに記録する日付を持つファイルをアーカイブする方法

私が使用している現在のNLog.configはこのように見えます。

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 
    <extensions> 
    <add assembly="My.Awesome.LoggingExentions"/> 
    </extensions> 
    <targets> 
     <target name="file1" xsi:type="File" 
       fileName="${basedir}/Logs/Log.log" 
       layout="${longdate} ${level:uppercase=true:padding=5} ${session} ${storeid} ${msisdn} - ${logger:shortName=true} - ${message} ${exception:format=tostring}" 
       archiveEvery="Day" 
       archiveFileName="${basedir}/Logs/Log${shortdate}-{#}.log" 
       archiveNumbering="Sequence" 
       maxArchiveFiles="99999" 
       keepFileOpen="true" 
      /> 
    </targets> 
    <rules> 
     <logger name="*" minlevel="Trace" writeTo="file1" /> 
    </rules> 
</nlog> 

これにより、ログファイルの日付が新しいログファイルの作成日に設定されます。後でログを読んでみたいと思ったら、不満の原因になります。

私はarchiveFileNameにatleastを1つ持たなければならないようですが、それはむしろです。だから、解決策があれば、私は2倍の感謝の気持ちになります=)

+1

本当に古いスレッドに戻って申し訳ありませんが、これまでの解決方法を見つけましたか? –

+0

@AndrewJones Nope。私は弾力性のある/ logstashとkibanaスタックに移動しました。 –

答えて

8

誰かはまだ解決策を必要とする場合 - 要求された機能は、最近NLogに追加されました:毎日https://github.com/NLog/NLog/pull/241を、それはたぶん、これは何が必要ですNuget

37

おそらく手遅れですが、あなたがする必要があるのは、ファイル名にdate layout rendererdate format。日付を含めることで、アーカイブ機能を指定する必要はありません。日付が変わると、新しいファイルが自動的に作成されます。念のため

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 
    <extensions> 
    <add assembly="My.Awesome.LoggingExentions"/> 
    </extensions> 
    <targets> 
     <target name="file1" xsi:type="File" 
        fileName="${basedir}/Logs/${date:format=yyyy-MM-dd}.log" 
        layout="${longdate} ${level:uppercase=true:padding=5} ${session} ${storeid} ${msisdn} - ${logger:shortName=true} - ${message} ${exception:format=tostring}" 
        keepFileOpen="true" 
       /> 
    </targets> 
    <rules> 
     <logger name="*" minlevel="Trace" writeTo="file1" /> 
    </rules> 
</nlog> 
+0

遅くなることはありません:)私は、アクティブなログにtailingなどのLog.logという名前を付けることを忘れていました。だからこのソリューションは良いですが、完璧ではありません:) –

+0

また、このソリューションは、古いアーカイブログファイルを自動消去する可能性を無効にします... – Verthosa

0

ではまだ利用できません、 フォルダにLog.logファイルがある

<target xsi:type="File" name="file1" fileName="${basedir}/logs/Log.log" 
     layout="${longdate} ${uppercase:${level}} ${message}" /> 
</targets> 
関連する問題