标签: rollingfileappender

什么决定 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
查看次数

在 utc 日期而不是服务器日期滚动文件

这是我的 log4net.xml 文件

<log4net>
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="C:\MVC2-" > </file>
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyy'-'MM'-'dd'.log'" />

    <dateTimeStrategy type="log4net.Appender.RollingFileAppender+UniversalDateTime" />

    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

    <staticLogFileName value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%utcdate %level %property{requestId} %thread %logger - %message%newline" />
    </layout>
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingFile" />
  </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

日志日期采用 UTC,但文件会在服务器时间滚动到第二天。这会导致几个小时的日志记录在错误的文件中。

如何根据 UTC 时间使文件翻转?

time log4net utc rollingfileappender

5
推荐指数
1
解决办法
1650
查看次数

带有每日滚动、gzip 和最大备份文件的 log4j 配置

是否有我可以使用的附加程序可以让我每天滚动,压缩和最大文件?

使用apache-log4j-extras此配置,我可以通过压缩获取每日滚动文件:

<appender name="debugFileRolling" class="org.apache.log4j.rolling.RollingFileAppender">
    <!-- The active file to log to -->
    <param name="file" value="debug.log" />
    <param name="append" value="true" />
    <param name="encoding" value="UTF-8" />
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="/%d{yyyy-MM-dd}-debug.log.gz" />
    </rollingPolicy>

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p %d [%t] %c: %m%n" />
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

但我不能指定MaxBackupIndex为 in org.apache.log4j.RollingFileAppender(注意两者之间的轻微命名空间差异)。

我想要两者而不必实现我自己的FileAppender, TriggeringPolicy, 或RollingPolicy

java logging log4j rollingfileappender

5
推荐指数
1
解决办法
9381
查看次数

log4j 将滚动文件移动到另一个目录/位置

我的目标是每当文件mylog.log滚动到mylog.log.1这个滚动文件时也会移动到另一个目录,所以在原始目录中总是只有mylog.log. 这可以使用RollingFileAppender吗?还是来自默认log4j库的另一个附加程序?

java log4j rollingfileappender

5
推荐指数
1
解决办法
5404
查看次数

Log4j2:RollingFile appender 中的 filePattern 的属性替换工作不正确

我正在尝试使用 log4j2(2.0.2) 和 10 个日志文件在 tomcat 7.0.23 中配置 RollingFile appender。

我在 filePattern 中使用 ${sys:catalina.base},它不起作用,日志文件放在 tomcat/bin/${sys:catalina.base}/ 目录中。

有趣的部分是第一个日志文件(没有数字)在 tomcat/logs 下创建正常 - 这意味着它成功地将文件名属性映射到真实路径。

当我用 filePattern="C:/apache-tomcat-7.0.23/logs/app.%i.log" 替换 ${sys:catalina.base} 时,它可以工作。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%X{REQ_ID}] [%c{1}] %m%n"/>
        </Console>
        <RollingFile name="FILE" fileName="${sys:catalina.base}/logs/app.log"
                     filePattern="${sys:catalina.base}/logs/app.%i.log">
            <PatternLayout pattern="%d %-5p [%X{REQ_ID}] [%c{1}] %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

这意味着 filePattern 没有正确解释。

如何在不必静态指定日志目录的情况下克服这个问题?

谢谢您的帮助

java logging rollingfileappender tomcat7 log4j2

5
推荐指数
1
解决办法
1851
查看次数

Log4j 2:无法在 RollingFileAppender fileName 和 filePattern 中使用 ContextMapLookup

我正在使用 log4j 2.0.2 进行日志记录。我试图将 ContextMapLookup 使用到 RollingFileAppender 的 fileName 和 filePattern 属性中,但我无法使其工作。

这是我在 REST 外观中的(简化的)Map 初始化:

@GET
public Response logSomething(@QueryParam("param") String param) {
    ThreadContext.put("someName", "default");
    LOGGER.info("Param from query: {}", param);
    ThreadContext.clearMap();
    return Response.ok().build();
}
Run Code Online (Sandbox Code Playgroud)

这是我的(简化的)配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n" />
    </Console>
    <RollingFile name="Rolling" 
                 fileName="logs/${ctx:someName}-webapps-metrics.log"
                 filePattern="logs/archives/${ctx:someName}-webapps-metrics-%i.log" >
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %m%n"/>
      <SizeBasedTriggeringPolicy size="5 KB"/>
    </RollingFile>
  </Appenders>
  <Loggers>

    <!-- My Logger using rollingFile -->
    <Logger name="com.ipanematech.rest.MyRESTFacade" level="info" additivity="false">
      <AppenderRef ref="Rolling" /> …
Run Code Online (Sandbox Code Playgroud)

java configuration logging rollingfileappender log4j2

5
推荐指数
1
解决办法
1874
查看次数

如何将 logback 操作记录到文件中?

我想使用 Logback 将“ch.qos.logback”类记录到日志文件中,但它仅记录在控制台中而不是记录在文件中。

是否可以?

我需要它来调查 logback 的一些问题。

这是我的日志配置文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<configuration scan="true" scanPeriod="60 seconds">

    <property name="base-path" value="../../xpto/sysX/logs"/>
    <property name="application-name" value="app_X"/>

    <appender class="ch.qos.logback.core.ConsoleAppender" name="CONSOLE">
        <param name="Threshold" value="INFO"/> 
        <encoder>
            <pattern>%d{dd/MM/yyyy HH:mm:ss.SSS} %-5level %logger{30} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILE_LOGBACK">
            <param name="Threshold" value="DEBUG"/>
            <file>${base-path}/mylog.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${base-path}/%d{yyyy-MM-dd_HH}/mylog.%i.log</fileNamePattern>
                <maxHistory>72</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>20MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder>
                <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%.30thread] %-5level %logger{50} - %msg%n</pattern>
            </encoder>
        </appender>
        <appender class="ch.qos.logback.classic.AsyncAppender" name="FILE_LOGBACK_ASYNC">
            <param name="Threshold" value="DEBUG"/>
            <appender-ref ref="FILE_LOGBACK"/>
            <queueSize>1000</queueSize>
            <discardingThreshold>0</discardingThreshold>
        </appender> 
        <logger additivity="false" level="DEBUG" name="ch.qos.logback">
            <appender-ref ref="FILE_LOGBACK"/>
        </logger> …
Run Code Online (Sandbox Code Playgroud)

java logback rollingfileappender logback-classic

5
推荐指数
1
解决办法
2588
查看次数

catalina.out 每日在 Tomcat9 中滚动

我默认安装了 tomcat 9.0.37。服务器日志中的 catalina.out 文件不会每天滚动,因此其大小已增长到几 GB。

但是,我观察到名称模式为catalina.yyyy-mm-dd.log 的文件不断生成,但不包含当天的完整日志。

我已经按照一些博客中的建议尝试了以下方法,但都是徒劳的。

1. 日志轮换

创建一个名为tomcat的文件并将以下代码粘贴到其中。

/home/tomcat/servers/tomcat/logs/catalina.out {
daily
rotate 30
missingok
dateext
compress
notifempty
copytruncate
size 20M
}
Run Code Online (Sandbox Code Playgroud)

2. 日志属性

改变了

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
Run Code Online (Sandbox Code Playgroud)

.handlers = 1catalina.org.apache.juli.FileHandler
Run Code Online (Sandbox Code Playgroud)

conf/logging.properties文件中。

谁能建议我如何从 catalina.out 推出每日日志?

logging rollingfileappender catalina.out tomcat9

5
推荐指数
0
解决办法
3024
查看次数