标签: rollingfileappender

在RollingFileAppender中使用动态文件目录的log4net中的问题

我的配置文件中有3个appender用于创建3种不同类型的日志.我通过设置全局上下文属性在3个appender中的每个中使用动态命名文件.在某些情况下,我需要为1个appender动态设置日志文件名.
当我只为1个appender设置文件名时,它会创建另一个名为"null"的文件,除了名称已动态设置的实际日志文件外,没有任何数据.我已经创建了配置文件,如图所示.

<appender name="RollingFileAppenderV1" type="log4net.Appender.RollingFileAppender">   
<file type="log4net.Util.PatternString" value="Logs\%property{applog}" /> 
.
.
.
<appender name="RollingFileAppenderV2" type="log4net.Appender.RollingFileAppender"> 
<file type="log4net.Util.PatternString" value="Logs\%property{dblog}" />
.
.
.
<logger name="Logger1"> 
<level value="DEBUG" /> 
<appender-ref ref="RollingFileAppenderV1" /> 
</logger> 
<logger name="Logger2"> 
<level value="DEBUG" /> 
<appender-ref ref="RollingFileAppenderV2" /> 
</logger> 
Run Code Online (Sandbox Code Playgroud)

在VB.NET代码中,我将文件名设置为:

log4net.GlobalContext.Properties("applog") = "file1.log"  
Dim logobj as log4net.Ilog = LogManager.GetLogger("Logger1")   
logobj.debug("test") 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它会创建"file1.log"以及另一个名为"null"的空文件.仅当我在运行时设置任一appenders文件名时才会发生这种情况.任何帮助赞赏.

null log4net filenames dynamic rollingfileappender

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

LogBack RollingFileAppender不写日志文件(虽然FileAppender工作)

我正在尝试以编程方式配置LogBack RollingFileAppender(ch.qos.logback.core.rolling.RollingFileAppender),它似乎没有工作.当我使用时FileAppender,一切似乎都运行正常,配置完全相同(更少的策略/触发器)所以我猜它不是一个权限问题.我试着评论出所有的政策配置,这也没有帮助.下面是我的示例代码,带有一些硬编码值.而且,根本没有任何错误.当我调试LogBack源代码时,我没有看到任何可能出错的地方.

任何暗示都是值得赞赏的.我需要在没有配置文件的情况下使用它,因为这是我组织中的限制.我正在MacBook上测试这个.

Logger logger = (Logger)LoggerFactory.getLogger(applicationName); 
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 
lc.reset(); 

RollingFileAppender<ILoggingEvent> fileAppender = 
    new RollingFileAppender<ILoggingEvent>(); 
fileAppender.setAppend(true); 
fileAppender.setFile("/Users/Jack/Desktop/logs/" + applicationName + ".log"); 
fileAppender.setContext(lc); 

SizeBasedTriggeringPolicy<ILoggingEvent> rPolicy = 
    new SizeBasedTriggeringPolicy<ILoggingEvent>("20MB"); 
fileAppender.setTriggeringPolicy(rPolicy); 
TimeBasedRollingPolicy<ILoggingEvent> tPolicy = 
    new TimeBasedRollingPolicy<ILoggingEvent>(); 
tPolicy.setFileNamePattern("/archive/" + applicationName + ".%d"); 
tPolicy.setMaxHistory(180); 
tPolicy.setParent(fileAppender); 
tPolicy.setContext(lc); 

PatternLayout pl = new PatternLayout(); 
pl.setPattern("%d %5p %t [%c:%L] %m%n)"); 
pl.setContext(lc); 
pl.start(); 

fileAppender.setLayout(pl); 
fileAppender.start(); 

logger.addAppender(fileAppender); 
logger.setLevel(Level.DEBUG); 

logger.debug("Test message");
Run Code Online (Sandbox Code Playgroud)

java logging file logback rollingfileappender

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

每 x 天滚动一次的 logback 文件名模式

我找到了一些预定义的fileNamePatterns TimeBasedRollingPolicy

这是每分钟都会做的一个。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logfile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">      
      <fileNamePattern>logfile.%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
    </rollingPolicy>
  </appender>
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何每 x 天执行此操作?

我可以延长吗RollingFileAppender?我正在 Scala 中做这个。

scala logback rollingfileappender slf4j

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

Log4j2:如何在Yaml配置中配置多个具有相同类型的Appender

我正在尝试在同一个YAML配置中使用2个RollingRandomAccessFile.我能用XML完成,但不能用YAML.结果,我想要两个文件"application.log"和"payload.log".

这是我的工作XML配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
    <Appenders>

        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <RollingRandomAccessFile name="PAYLOAD" fileName="logs/payload.log"
                                 filePattern="logs/$${date:yyyy-MM}/payload-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="1 KB"/>
            </Policies>
        </RollingRandomAccessFile>

        <RollingRandomAccessFile name="APPLICATION" fileName="logs/application.log"
                                 filePattern="logs/$${date:yyyy-MM}/application-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="1 KB"/>
            </Policies>
        </RollingRandomAccessFile>

    </Appenders>

    <Loggers>
        <Root level="info" additivity="false">
            <appender-ref ref="CONSOLE" level="trace"/>
            <appender-ref ref="APPLICATION" level="trace"/>
            <appender-ref ref="PAYLOAD" level="trace"/>
        </Root>
    </Loggers>

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

这是我的非工作YAML配置.RollingRandomAccessFile的第二个声明会覆盖第一个声明,只有"application.log":

Configuration:
  status: debug

  Appenders:
    Console: …
Run Code Online (Sandbox Code Playgroud)

yaml rollingfileappender log4j2

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

Log4j2设置日志级别

我在我的春季应用程序中使用log4j2作为我的日志工具.我想将特定库/包的日志级别设置为与根不同的日志级别.例如,我想要org.springframeworkINFO并com.google成为WARN.我发现这个log4j2.properties:

appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
logger.rolling.name = com.test.app
logger.rolling.level = ALL
logger.rolling.appenderRef.rolling.ref = RollingFile

rootLogger.level = info
Run Code Online (Sandbox Code Playgroud)

我不明白是什么logger.rolling意思?我一直在log4j2文档中找到它,但没有解释它是什么或什么ALL意思.

如何为特定包添加日志级别以及这些滚动级别的内容是什么?

java logging spring rollingfileappender log4j2

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

从 TimeBasedRollingPolicy 移动到 SizeAndTimeBasedRollingPolicy 以在每个 mignight 或最大大小翻转

当我使用以下附加程序时

<appender name="APPLICATION"
          class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>D:/logs/log.txt</file>
    <append>true</append>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%p %d [%t] %L - %m%n</Pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>D:/logs/log.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <!-- keep 30 days' worth of history -->
        <maxHistory>30</maxHistory>
    </rollingPolicy>
</appender>
Run Code Online (Sandbox Code Playgroud)

我收到以下警告:

不推荐使用 SizeAndTimeBasedFNATP。改用 SizeAndTimeBasedRollingPolicy

所以我改变SizeAndTimeBasedFNATPSizeAndTimeBasedRollingPolicy

这给我留下了这个:

<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
Run Code Online (Sandbox Code Playgroud)

但后来我得到:

没有为名为 APPLICATION 的 RollingFileAppender 设置 TriggeringPolicy

这让我认为没有这样的 TriggeringPolicy 所以我将 TriggeringPolicy 恢复为SizeAndTimeBasedFNATP,并将滚动策略从 更改TimeBasedRollingPolicySizeAndTimeBasedRollingPolicy

我的新滚动策略现在变为:

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>D:/logs/log.%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize> …
Run Code Online (Sandbox Code Playgroud)

logging logback rollingfileappender

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

通过XML文件*和*代码配置log4net appender

我今天开始玩log4net,到目前为止,我真的很喜欢它.为了保留我们当前的日志记录功能,应用程序需要在应用程序启动时创建新的日志文件.日志文件名具有编码在其中的日期和时间戳.目前,我已经通过一个配置了log4net XmlConfigurator,这很好用,除了我的文件名RollingFileAppender在配置XML文件中是硬编码的.

我想继续使用XmlConfigurator,但是在调用之后Configure(),我希望得到RollingFileAppender和,在代码中,将其文件值更改为动态生成的字符串.网上的示例文档现在似乎已经关闭了,但是我已经深入研究了SDK参考,看起来我可以使用HeirarchyGetAppenders()做我需要做的事情.我是在正确的轨道上吗?

好的,我对此进行了尝试并尝试了以下代码,但这些代码无效:

private static readonly ILog _log = LogManager.GetLogger(typeof(GUI));
// in the config file, I've set the filename to example.log, and it works
XmlConfigurator.Configure(new FileInfo("log_config.xml"));
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
if(hierarchy != null) {
    // get the appenders
    IAppender[] appenders = hierarchy.GetAppenders();
    // change the filename for the RollingFileAppender
    foreach( IAppender a in appenders) {
        RollingFileAppender rfa = a as …
Run Code Online (Sandbox Code Playgroud)

log4net rollingfileappender appender log4net-configuration

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

log4j - 将备份日志文件的RollingFileAppender配置为DailyRollingFileAppender

我们是否可以将RollingFileAppender get函数配置为DailyRollingFileAppender.这意味着我想每天备份(旋转)日志文件,使用"最大文件大小"和"日志文件可以保留的最大日期数"(RollingFileAppender相关的maxBackupIndex和maxFileSize属性).问题是,使用DailyRollingFileAppender,我们无法配置maxBackupIndex和maxFileSize属性.谢谢.

java logging log4j rollingfileappender

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

Log4net:将TimeStamp附加到已创建文件的名称中

下面是我的记录器配置文件的代码。在LogFolder中创建新的txt文件时,我的目标是在文件名后附加当前时间戳。例如,在2015年7月20日上午10:27:19,文件名应命名为“ logger_2015-07-20_10-27-19.txt”

使用我提供的代码,确实创建了一个记录器文件,但其名称为“ logger-.txt”。时间戳无法显示。

我是否需要提供“ $ {byTimeStamp(local)}”的引用?如果是,我将如何做到这一点?

    <?xml version="1.0" encoding="utf-8"?>
        <configuration>
          <configSections>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
          </configSections>
          <log4net>
            <timestamp key="byTimeStamp" datePattern="yyyy-MM-dd_HH-mm-ss" timeReference="contextBirth"/>
//Here is where I set the name of the logger txt.
            <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
              <param name="File" value="C:\LogFolder\logger_${byTimeStamp(local)}.txt" />
              <param name="AppendToFile" value="true"/>
              <param name="RollingStyle" value="Once"/>
              <param name="DatePattern" value="yyyy-MM-dd'.txt'" />
              <preserveLogFileNameExtension value="true"/>
              <maxSizeRollBackups value="20" />
              <staticLogFileName value="false" />
              <layout type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline" />
              </layout>
            </appender>
            <root>
              <level value="ALL" />
              <appender-ref ref="LogFileAppender" />
            </root>
          </log4net> …
Run Code Online (Sandbox Code Playgroud)

c# logging log4net timestamp rollingfileappender

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

日志4j的RollingFileAppender中基于月度和日志保留30天的日志轮换

嗨,需要配置 RollingFileAppender 以每天轮换日志并删除 30 天前的旧日志文件,可以帮助我解决此配置的 log4j.prepoerties。我想从 DailyRollingFileAppender 切换到 RollingFileAppender 因为 DailyRollingFileAppender 没有删除的灵活性

log4j rollingfileappender apache-kafka

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