标签: rollingfileappender

Log4Net出了什么问题?

我已经在几个高流量网站上使用Log4Net几年了,我不能说我是一个快乐的客户.所以,想看看是否有其他人有同样的担忧:

  1. RollingFileAppendor的CPU开销很大.我的一些网站每天需要跟踪5-10GB,当我启用日志记录时,CPU利用率会增加一倍以上.我想避免讨论为什么需要如此多的追踪.一些关键任务应用程序必须跟踪每个事务的每个步骤.

  2. 按日期滚动通常是不可靠的(它在白天记录正常,但随后会在午夜时分弄乱最后一天的日志文件).此行为不一致.我似乎不仅仅是网上的一些人抱怨这个,似乎没有人有一个好的解决方案.

  3. 最后但同样重要的是,我在过去三年中没有在Apache网站上看到任何新版本.因此,这开始看起来像一个废弃的开源项目,这通常意味着是时候转向一些替代框架了.

所以,我正在考虑放弃Log4Net,转而使用Microsoft Enterprise Library或其他东西.这里有人和我有同样的问题吗?

performance logging log4net rollingfileappender

12
推荐指数
1
解决办法
4159
查看次数

需要一个通过属性配置log4j RollingFileAppender的工作示例

我使用log4j进行日志记录,使用属性文件进行配置.目前,我的日志文件太大(3.5 GB对于日志文件来说太大).所以我认为我需要使用RollingFileAppender - 但是当我这样做时,日志文件继续变得过大.我相信我错误配置了它; 有没有人有一个配置RollingFileAppender 的工作示例?

为了记录,我当前的配置如下所示:

log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.layout=com.mycompany.util.log.Log4JSimpleLayout
log4j.appender.MAIN_LOG.DatePattern='.'yyyy-MM-dd
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=99
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG
Run Code Online (Sandbox Code Playgroud)

RollingFileAppender的替代方案也是一个很好的解决方案.

log4j rollingfileappender

12
推荐指数
2
解决办法
7万
查看次数

除非有新日志,否则TimeBasedRollingPolicy不会滚动

这是我的配置:

<appender name="myAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <append>true</append>
    <file>mylogs.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- daily rollover -->
        <fileNamePattern>mylogs-%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>

        <!-- keep 30 days' worth of history -->
        <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} [%thread] - %M:%L - %msg%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>INFO</level>
    </filter>
</appender>
Run Code Online (Sandbox Code Playgroud)

根据此处找到的logback文档(http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy),文件将根据我的%d{yyyy-MM-dd_HH-mm}fileNamePattern 每分钟翻转一次.

我观察了它是如何工作的,这是我的发现:

  • 它不会很快创建日志文件.
  • 它只在新日志到达时为前一分钟创建一个日志文件.(例如,我在晚上11:53有一个日志,现在是晚上11点55分,它在下午11点54分点击它时不会立即创建一个新的日志文件,但是当一个新的日志出现时,请说明晚上11:56,它现在创建了晚上11:53的文件.)

我错过了什么,我以为它会每分钟创建一个日志文件?

java logging logback rollingfileappender

12
推荐指数
2
解决办法
1万
查看次数

如何通过log4j控制每日滚动和最大文件大小的日志文件?

我想创建可以在第二天开始时滚动的日志文件,或者如果达到指定的文件大小,日志文件必须包含在日期文件夹中.文件夹的格式是YYYYMMDD(/20111103/mylogfile.log)

是否可以通过Log4j执行此操作而不实现自定义类?

现在我正在使用log4j和log4j-extra,我设置log4j API中定义的FileNamePattern属性来每天滚动我的文件并将最大文件大小设置为50 MB.

log4j.xml是:

<appender name="MYAPPENDER" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="encoding" value="UTF-8" />
    <param name="append" value="true" />
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="${catalina.home}/logs/MY-APP/%d{yyyyMMdd}/MY-APP_%d{yyyyMMddHHmmss}.log" />
    </rollingPolicy>
    <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
        <param name="maxFileSize" value="50000000" />
    </triggeringPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%d{dd/MM/yyyy HH\:mm\:ss}] %-5p [%c.%M(),%4L] - %m%n" />
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

上述设置的结果是日志文件未在下一天开始滚动,但如果文件大小达到50 MB,则将滚动日志文件.

请帮忙告诉我.m(_ _)m

log4j rollingfileappender

11
推荐指数
3
解决办法
5万
查看次数

log4net +多线程+滚动文件appender

我在log4net.config中有log4net的这个设置,允许多个线程写入同一个文件:

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <!-- Minimal locking to allow multiple threads to write to the same file -->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <file value="log\UI.log"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <maxSizeRollBackups value="30"/>
    <datePattern value="-yyyyMMdd"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline%date [%thread] %-5level [%property{identity}] %logger{3} - %message%newline"/>
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

但是在午夜之后,新创建的日志文件一直被覆盖,因此文件中只有最后一个事件.服务器重新启动后,它再次向右移动直到下一个午夜.
那么有人可以说这是配置问题还是这只是一个log4net问题?

log4net multithreading rollingfileappender

11
推荐指数
1
解决办法
1万
查看次数

当logrotate旋转日志文件时,log4j fileappender不会切换到新文件

语境:

我想使用log4j将审计相关的日志写入特定的日志文件,比方说audit.log.我不想使用syslogappender(基于udp),因为我不想容忍数据丢失.另外,当文件达到一定大小时,我使用logrotate来旋转audit.log.

问题:

我遇到的是,当logrotate将文件audit.log旋转到audit.log.1时,log4j继续写入audit.log.1而不是写入audit.log.

可能的方法:

  1. 我知道除了使用logrotate之外我可以使用rollingfileappender进行日志轮换,所以当scrollfileappender滚动文件时,它会毫无困难地切换到新文件.但我不能使用rollingfileappender的原因是我想使用logrotate的post旋转功能在旋转发生后触发一些脚本,而滚动文件无法提供.

  2. 我能想到的另一种绝望的方法是自己编写一个log4j自定义appender来关闭日志文件(audit.log.1)并在检测到文件被旋转时打开新文件(audit.log).

  3. 我从未使用ExternallyRolledFileAppender,但是如果可以使用logrotate post rotate将信号发送到ExternallyRolledFileAppender并使log4j知道文件被旋转,并开始写入新文件?

题:

只是想知道是否有一些像已经发明/写的那样的追加者?或者我还有其他选择来解决这个问题吗?

log4j logrotate rollingfileappender fileappender log-rotation

11
推荐指数
1
解决办法
4519
查看次数

达到maximumFileSize时,log4net滚动文件appender文件名格式

我们正在使用log4net滚动文件appender,并对我们的日志文件有以下要求:

  • 每天开始时的新日志文件,日期在文件名中
  • 最大日志文件大小为500KB

我们遇到的问题是当文件达到500KB时的文件命名策略:它们被重命名为.1后缀.这是有问题的,因为它打破了Windows中的文件关联,因此打开文件(稍微)更多的是一件苦差事.

我们使用的配置是:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="c:\log\path" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value=".yyyy-MM-dd.lo\g" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <maxSizeRollBackups value="50" />
  <maximumFileSize value="500KB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

是否支持指定我们的文件命中时使用的命名策略maximumFileSize

log4net rollingfileappender

11
推荐指数
1
解决办法
6831
查看次数

使用log4j每天创建新的日志文件

我想在我的java项目中使用Log4j,我应该在配置文件中提供这样的配置,每天晚上12点生成新文件,文件名应该生成 - 输出日志-MerProjectName-HostName-2013-Dec-10. txt 名称).我的配置文件是这样的 -

log4j.appender.FILE = org.apache.log4j.DailyRollingFileAppender    
log4j.appender.FILE.File = ${log}/log.out    
log4j.appender.FILE.DatePattern = '.' yyyy-MM-dd-a
Run Code Online (Sandbox Code Playgroud)

它每天都在创建新文件,但它会在文件名后附加日期.请帮我.提前致谢.

java log4j rollingfileappender

10
推荐指数
1
解决办法
3万
查看次数

具有复合滚动样式的Log4Net RollingFileAppender正在覆盖数据

我有一个Log4Net RollingFileAppender配置为:

<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>

    <root>
      <level value="ALL" />
    </root>

    <logger name="RollingFileAppender" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender" />
    </logger>

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="C:\\MyLog.log" />
      <param name="AppendToFile" value="true" />
      <param name="DatePattern" value="yyyy-MM-dd"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
      </layout>
    </appender>

  </log4net>

</configuration>
Run Code Online (Sandbox Code Playgroud)

查看文档,默认滚动样式是Composite,因此当它达到特定大小(默认值为10MB)时,它将会滚动,而不仅仅是在日期.

问题是当它达到大小时,它正在重新启动日志并且我从前半天丢失数据(它在中午左右达到这个大小).
为什么这不会只是滚动到一个新文件,所有未来的日志行都被放入MyLog.log?或者是日志正在滚动,但是在午夜,它再次滚动并覆盖过时的日志(例如,一旦达到10MB,滚动到MyLog.log2009-04-08,然后在午夜覆盖同一个文件)?

我会设置

<rollingStyle value="Date" />
Run Code Online (Sandbox Code Playgroud)

这是我要做的就是确保它只在日期边界滚动吗?我可以在Log4Net.config中动态更改,还是必须重新启动应用程序?它在IIS6上运行.

logging log4net rollingfileappender

9
推荐指数
2
解决办法
3万
查看次数

如何在Log4j中使用SizeBasedTriggeringPolicy和TimeBasedRollingPolicy?

嗨,我正在使用Log4j进行日志记录.以下是我的配置.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>

<appender name="FileAppender_Comp3" class="org.apache.log4j.rolling.RollingFileAppender"> 

<rollingPolicy name="file" class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
<param name="FileNamePattern" value="log/Comp3_%d{dd-MM-yyyy HH-mm-ss}.log" />
</rollingPolicy> 

<triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
<param name="MaxFileSize" value="3kb"/>
</triggeringPolicy>

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p [%t] %c (%F:%L) - %m%n"/>
</layout>

</appender>
Run Code Online (Sandbox Code Playgroud)

但是当我运行文件时,它会抛出以下错误.

log4j:WARN Failed to set property [maxFileSize] to value "3kb". 
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题.请帮我.

java log4j rollingfileappender

9
推荐指数
3
解决办法
2万
查看次数