当前位置: 首页 > 知识库问答 >
问题:

从Log4J1.2迁移到log4j2

吴升
2023-03-14

我正在将我的应用程序从Log4J1.2迁移到Log4J2-2.8.1版本。下面是log4j.properties文件中现有的1.x配置。

log4j.appender.JSERRORFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.JSERRORFILE.File=${log4j.loglocation}/jserror.log
log4j.appender.JSERRORFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.JSERRORFILE.layout.ConversionPattern=%d %-5p %c - %m%n

log4j.logger.com.app.JavascriptLogger=ERROR,JSERRORFILE
log4j.additivity.com.app.JavascriptLogger=false
<RollingFile name="JSERRORFILE" fileName="${log-path}/jserror.log">
<PatternLayout pattern="%d %-5p %c - %m%n" />
</RollingFile>

<Logger name="com.app.JavascriptLogger" level="ERROR" additivity="false">
<AppenderRef ref="JSERRORFILE"/>
</Logger>
 org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element RollingFile are invalid

共有1个答案

张淳
2023-03-14

您需要告诉RollingFile附加器何时滚动(触发策略),以及滚动的结果应该是什么样子。

如果希望以某个常规间隔(TimeBasedTriggeringPolicy或CronTriggeringPolicy),则需要指定包含类似SimpleDateFormat的字符串的FilePattern。如果要滚动以防止大文件(SizeBasedTriggeringPolicy),则需要指定包含%iFilePattern

filePattern是希望将旧(已滚动)文件移动到的位置的相对或绝对路径。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="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>
        <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
        <SizeBasedTriggeringPolicy size="250 MB"/>
      </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

上面的cron表达式每天触发一次。

有关详细信息和更多示例,请参阅用户手册的RollingFile appender部分。

 类似资料:
  • 我正在从log4j1迁移。由于最近的漏洞,x到log4j2。另一个依赖项似乎引用了旧的log4j1。x文件。 除了删除旧的log4j1. x文件之外,我还添加了log4j-core、log4j-api和log4j-1.2-api所有2.16版本。我查阅了迁移的留档https://logging.apache.org/log4j/2.x/manual/migration.html,并认为最后一个ja

  • 嗨,我遇到了一些使用log4j的代码。我想移动到log4j2。从http://logging.apache.org/log4j/2.x/manual/migration.html中,我发现可以使用log4j-1.2-api.jar。我有以下问题: > 在代码中,我有一个自定义的appender(正如链接中给出的,我不应该使用类appender的内部),这意味着我不能使用log4j-1.2-api.

  • 问题内容: 我们的Oracle数据库遇到了严重的性能问题,我们想尝试将其迁移到基于MySQL的数据库(直接使用MySQL,或者最好是Infobright)。 问题是,在我们实际上不知道新数据库的所有功能是否符合我们的需求之前,我们需要让旧系统和新系统至少重叠数周(如果不是几个月)。 因此,这是我们的情况: Oracle数据库由多个表组成,每百万行。白天,实际上有成千上万的语句,我们无法停止迁移。

  • 问题内容: 在我的应用程序中,我从UIWebView迁移到WKWebView,如何为WKWebView重写这些功能? 和 问题答案: UIWebView => WKWebView等效 关于您可以写: 对于:

  • 考虑: 为什么,我怎么才能让它起作用? 我的CPU是i5-10210u(支持AVX-256)。在X64版本/调试中运行。

  • TypeScript不是凭空存在的。 它从JavaScript生态系统和大量现存的JavaScript而来。 将JavaScript代码转换成TypeScript虽乏味却不是难事。 接下来这篇教程将教你怎么做。 在开始转换TypeScript之前,我们假设你已经理解了足够多本手册里的内容。 如果你打算要转换一个React工程,推荐你先阅读React转换指南。 如果你在写纯JavaScript,你大