标签: rollingfileappender

TextWriterTraceListener跟踪文件太大

我正在使用C#System.Diagnostics.TextWriterTraceListener来打印跟踪.但跟踪文件变得太大(数百MB).我想改变行为TextWriterTraceListener,如果跟踪文件变大,它会将输出写入另一个文件.例如,原始跟踪文件是'output1.txt',如果它大于100MB,则TextWriterTraceListener应写入'output2.txt'.

你遇到过类似的问题吗?有没有优雅的解决方案?

.net c# logging trace rollingfileappender

8
推荐指数
1
解决办法
6313
查看次数

自定义日志附加程序 - 预先添加文件标题并进行翻转

我需要的功能是在配置的日志文件的开头写一个标题行.此外,日志文件应该根据时间模式滚动(我说的是logback 1.0.7).

所以,我正在考虑编写一个Appender - 虽然我不确定它是不是我真正需要的自定义布局.

1)Appender

根据logback的文档,正确的方法是扩展AppenderSkeleton,但那么我将如何将其与RollingFileAppender(以使文件翻转?)相结合?

另一方面,如果我扩展RollingFileAppender,我会覆盖哪种方法来装饰现有的功能?我怎么告诉它只在文件的开头写这个特定的字符串?

2)布局

类似地,该方法似乎正在扩展LayoutBase,并提供实现doLayout(ILoggingEvent event).但同样,我不知道如何装饰行为 - 只是在文件中添加一个新行,而不是破坏其功能(因为我仍然希望其余日志正确显示).

getFileHeader()LayoutBase看起来很有希望,但我要如何使用它?是否打算被自定义布局覆盖?(可能是的,因为它是Layout界面的一部分,但那又怎么样?)

谢谢!

layout logback rollingfileappender appender

8
推荐指数
2
解决办法
3732
查看次数

按大小和时间滚动日志

我使用RollingFileAppenderlog4j 1.2.16,其推出的日志文件,当他们达到一定规模.现在我想每天滚动日志文件,当它们达到一定大小时.因此,每天将有一个或多个日志文件.

例如,

myapp.log
myapp-17.12.2013.log
myapp-16.12.2012.log
myapp-16.12.2012.1.log
myapp-16.12.2012.2.log

是否有一个现成的appender,它已经做到了吗?

java log4j rollingfileappender appender

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

如何删除旧版的log4j2日志,最多可保存10个文件?

我想要的是:

  • 10个日志文件的最大,在
  • 每个日志文件,大小不超过50MB.

因此,logs文件夹永远不会增长(50MB*10)= 500MB.

但似乎我的log4j2配置没有正确完成.

发生的事情是:

  • 日志在50 MB后翻转
  • 每天最多保存10个日志
  • 因此,日志文件夹中保存的日志文件数量没有限制(因为例如,在2天内,每个50mb的20个日志已经收集)

这是配置:

<Configuration status="WARN">
    <Appenders>
        <RollingFile name="RollingFile" fileName="log/my.log" filePattern="log/my-%d{MM-dd-yyyy}-%i.log">
          <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
          </PatternLayout>
          <Policies>
                <OnStartupTriggeringPolicy />
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="50 MB"/>
          </Policies>
          <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

java logging log4j rollingfileappender log4j2

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

从log4j迁移到log4j2:MaxFileSize和MaxBackupIndex的等效属性

我的问题是关于log4j 中的LoggerAppenderRollingFile。由于项目中的一些更改,我必须升级到 log4j2,我的问题是“ MaxFileSize”和“ MaxBackupIndex”的等效网络属性是什么。log4j.xml 的该部分如下所示:

<appender name="profilingAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="C:\\logs\\test.log"/>
        <param name="MaxFileSize" value="20000KB"/>
        <param name="MaxBackupIndex" value="5"/>
        <param name="encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %c - [%X{USER}] - %m%n" />
        </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

亲切的问候

log4j rollingfileappender log4j2

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

尝试创建log4j2 rollingfileappender时收到错误

我正在尝试使用log4j2从使用FileAppender切换到RollingFileAppender(与beta3和beta4 jar一起发生).

我把它配置为:

<RollingFile name="RollingFile" fileName="${logdir}/${filename}" 
    filePattern="${logdir}/app-%d{yyyy-MM-dd-hh-mm-ss}_%i.log" >
    <PatternLayout>
        <pattern>%d %p %C{1.} [%t] %m%n</pattern>
    </PatternLayout>
    <Policies>
        <OnStartupTriggeringPolicy/>
    </Policies>
    <DefaultRolloverStrategy max="20"/>
</RollingFile>  
        ...
<loggers>
          <root level="ERROR">
    <appender-ref ref="RollingFile"/>
    <appender-ref ref="STDOUT"/>
</root>
        ...
Run Code Online (Sandbox Code Playgroud)

在代码中,我试图以这种方式获取记录器:

Logger logger = LogManager.getLogger(this.getClass());
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时我得到了这个异常:

2013-02-01 17:56:54,773 ERROR Unable to invoke method createAppender in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(BaseConfiguration.java:723)
    at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:489)
    at org.apache.logging.log4j.core.config.BaseConfiguration.createConfiguration(BaseConfiguration.java:481)
    at org.apache.logging.log4j.core.config.BaseConfiguration.doConfigure(BaseConfiguration.java:162)
    at org.apache.logging.log4j.core.config.BaseConfiguration.start(BaseConfiguration.java:120)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:271)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:287)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:139) …

java configuration rollingfileappender log4j2

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

什么决定 log4j TimeBasedRollingPolicy 何时滚动?

TimeBasedRollingPolicy我正在从Log4J Extras设置一个,但我不清楚什么告诉政策何时滚动。 API并不明确,所以我只是做出推断。听起来它是FileNamePattern决定频率的最后一个元素。

以log4j Wiki中的示例为例:

<appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender">
    <!-- The active file to log to -->
    <param name="file" value="/applogs/myportal/portal.log" />
    <param name="append" value="true" />
    <param name="encoding" value="UTF-8" />

    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
    <!-- The file to roll to, this is a fairly intelligent parameter, if the file
         ends in .gz, it gzips it, based on the date stamp it rolls at that time, 
         default is yyyy-MM-dd, (rolls at midnight)
    -->
        <param name="FileNamePattern" value="/applogs/myportal/portal.%d.log.gz" />
    </rollingPolicy> …
Run Code Online (Sandbox Code Playgroud)

java log4j rollingfileappender

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

log4j:错误无法重命名

我在tomcat服务器日志中收到此错误"log4j:ERROR无法重命名".我的log4j XML中有多个DailyRollingFileAppender.每个appender指向不同的文件.只有一个应用程序实例正在运行.我使用了Handle实用程序并运行命令(以日志文件名作为参数)

处理-f ams-app.log,结果是Tomcat7.exe pid:5032类型:文件54C:E:\ apps\ams\logs\ams-app.log

从这里我假设文件只有一个锁.我的环境Windows Server 2008,tomcat 7.0和Java 6以及slf4j-log4j12(1.5.6)

当在AIX服务器上托管相同的应用程序时,不会发生此问题.我搜索了这个问题,似乎是windows specfic.此外,我并不热衷于使用DatedFileAppenders或任何分叉的log4j.logback是否解决了这些问题.任何关于如何解决这个问题的建议表示赞赏.谢谢

这里是我的log4j xml

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE_APPENDER" class="org.apache.log4j.ConsoleAppender">
    <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
    <param name="Target" value="System.out"/>
    <param name="Threshold" value="DEBUG"/>
    <layout class="org.apache.log4j.PatternLayout">     
        <param name="ConversionPattern" value="%n %d{yyyy/MM/dd HH:mm:ss} %-5p %x %M(%F:%L) - %m  %n"/>
    </layout>
</appender>

<appender name="APP_APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
    <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
    <param name="datePattern" value="yyyy-MM-dd"/>
    <param name="file" value="E:/apps/ams/logs/ams-app.log"/>
    <param name="append" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%n %d{yyyy/MM/dd HH:mm:ss} %-5p %x %M(%F:%L) - %m  %n"/>
    </layout>        
</appender>

<appender name="SQL_APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
    <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
    <param name="datePattern" value="yyyy-MM-dd"/> …
Run Code Online (Sandbox Code Playgroud)

log4j rollingfileappender windows-server-2008 tomcat7

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

Log4j2保存文件(使用RollingFile appender)

我正在尝试使用log4j2来创建我正在开发的系统的日志文件,我已经按照他们网站上的说明进行操作,并且在运行时没有发生错误,但是日志没有保存在我设置的地方(例如" d:\日志\ app.log").

这是我的log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <RollingFile name="MyRollingFile" fileName="D:/logs/app.log"
                 filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout>
        <pattern>%d %p %C{1.} [%t] %m%n</pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="20"/>
    </RollingFile>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </appenders>
  <loggers>
    <logger name="Log_RollingFile" level="TRACE" additivity="false">
      <appender-ref ref="MyRollingFile"/>
    </logger>
    <root level="ERROR">
      <appender-ref ref="Console"/>
    </root>
  </loggers>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我试过了 :

  • 删除app.log以查看我的配置(D:\ logs\app.log)是否有效.当我运行应用程序时,它会创建app.log,所以我认为这意味着它会看到配置,唯一的问题就是它没有保存我在java应用程序中执行的log.info
  • 将根级别更改为"TRACE",然后打印log.info.

[编辑:]

我在类路径上也有这些库

  • 的log4j-API-2.0-beta3.jar
  • log4j的核-2.0-beta3.jar

我在RollingFile配置或库(可能)上遗漏了什么?

提前致谢.

java rollingfileappender log4j2

6
推荐指数
1
解决办法
6540
查看次数

org.apache.log4j.RollingFileAppender和org.apache.log4j.rolling.RollingFileAppender之间的差异

有人能说出这件事之间有什么不同吗?而且,我无法理解,如果DailyRollingFileAppender存在,为什么需要使用TimeBasedRollingPolicy?

log4j rollingfileappender extras

6
推荐指数
1
解决办法
6886
查看次数