Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net NLog限制每日存档的大小_.net_Logging_Nlog - Fatal编程技术网

.net NLog限制每日存档的大小

.net NLog限制每日存档的大小,.net,logging,nlog,.net,Logging,Nlog,我正在使用NLog日志框架。我的应用程序需要保留过去14天日志的存档 我当前使用的NLog.config如下所示 问题是,我的应用程序生成大量日志条目,有时每日日志的大小可能会超过1GB。是否可以保留14天的每日存档结构,并添加新的子组,以便在日日志的大小限制超过100 mb时额外存档一天 所以最终的日志输出应该是这样的 MyApp.2016-10-01_1 // (100mb limit reached) MyApp.2016-10-01_2 MyApp.2016-10-02 MyAp

我正在使用NLog日志框架。我的应用程序需要保留过去14天日志的存档

我当前使用的NLog.config如下所示


问题是,我的应用程序生成大量日志条目,有时每日日志的大小可能会超过1GB。是否可以保留14天的每日存档结构,并添加新的子组,以便在日日志的大小限制超过100 mb时额外存档一天

所以最终的日志输出应该是这样的

MyApp.2016-10-01_1   // (100mb limit reached)
MyApp.2016-10-01_2
MyApp.2016-10-02
MyApp.2016-10-03_1   // (100mb limit reached)
MyApp.2016-10-03_2   // (100mb limit reached)
MyApp.2016-10-03_3
...
MyApp.2016-10-14

是,通过使用
archiveNumbering=DateAndSequence
archiveAboveSize

e、 g

100MB=104857600字节


文件名为:

MyApp.2016-10-01.1   // (100mb limit reached)
MyApp.2016-10-01.2
MyApp.2016-10-02.1
MyApp.2016-10-03.1   // (100mb limit reached)
MyApp.2016-10-03.2   // (100mb limit reached)
MyApp.2016-10-03.3
...
MyApp.2016-10-14.1

所以你有三个问题需要解决-

  • 每天创建一个新的.log文件
  • 为每个文件添加大小限制
  • 最多保留14天的日志
  • 你可以试试这个。 如果在文件名中包含${shortdate},则文件名将是MyApp_yyyyMMdd.log,它本身每天都会滚动

    现在使用archiveNumber=“Sequence”和archiveAboveSize=“your\u size\u limit\u here”来存档大小限制

    NLog 4.7引入了一个新属性“maxArchiveDays”,将其设置为您的值14

    有了这些,目标应该看起来像

        <target xsi:type="File" name="MyFile" 
                fileName="C:\Logs\MyApp_${shortdate}.log" 
                layout="<layout_here>" 
                ....
                archiveFileName="C:\Logs\MyApp_${shortdate}_{#}.log"
                archiveNumbering="Sequence" 
                archiveAboveSize="<your_size_limit_here>" 
                maxArchiveDays="14"/>
    
    
    

    参考资料:

    这似乎不起作用。我将其设置为
    maxArchiveFiles=“7”
    。它保存了7个文件,而不是7天的文件。所以,如果我的文件在一天内按大小滚动10次,我甚至得不到一天的日志。@Swoogan这是正常的行为。如果没有达到限制,您可以在归档目录中找到七天日志。但是,如果达到限制,比如说20GB的日志,旧日志将被覆盖。目前,按天归档和按大小归档选项是相互排斥的。使用属性maxArchiveFiles nlog可以保存7个日志。在未来的实现中,Nlog可能会添加maxSizeArchiveFilesPerDay和maxSizeArchive属性,从而使您具有更多的通用性。您找到解决方案了吗?