小编Rem*_*pma的帖子

547
推荐指数
15
解决办法
34万
查看次数

是否值得将slf4j与log4j2一起使用

我无法决定是否使用slf4j与log4j2.基于在线帖子,看起来不会有任何性能影响,但它确实是必需的.

这些点也有利于log4j2:

  • SLF4J强制您的应用程序记录字符串.如果要记录文本,Log4j 2 API支持记录任何CharSequence,但也支持按原样记录任何Object.
  • Log4j 2 API支持记录Message对象,Java 8 lambda表达式和无垃圾日志记录(它避免了创建vararg数组并避免在记录CharSequence对象时创建字符串).

java logging log4j slf4j log4j2

99
推荐指数
2
解决办法
4万
查看次数

"状态"在Log4j2配置中意味着什么?

我刚刚完成了log4j2.xml配置文件的调整,发现了一些我不太懂的东西.那是什么<Configuration status="SOME_STATUS_HERE">

几乎在这里的所有示例中: 来自Apache的http://logging.apache.org/log4j/2.x/manual/configuration.html人员将状态添加到配置中.

例如,这是第一个:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"> <!--status="WARN" - what is this???--> 

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

 <Loggers>
  <Root level="error">
   <AppenderRef ref="Console"/>
  </Root>
 </Loggers>

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

java configuration logging log4j log4j2

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

Log4J2属性替换 - 默认

我只是想知道是否有办法为LOG4J中的属性替换提供默认值?

我想在java系统属性中传递文件路径,然后将其与"$ {env:mySystemProperty}"一起使用.但是如果开发人员忘记设置此属性呢?然后我想在log4j2.xml中定义一些有意义的默认值.

知道如何实现这个功能吗?

编辑:

env替换对我不起作用:

standalone.conf

-DoauthLoginLogPath=/path/oauth2.log
Run Code Online (Sandbox Code Playgroud)

log44j2.xml

<Appender type="File" name="File" fileName="${env:oauthLoginLogPath}" immediateFlush="true">
<Appender type="File" name="File" fileName="${sys:oauthLoginLogPath}" immediateFlush="true">
Run Code Online (Sandbox Code Playgroud)

我可以在wildfly控制台中看到该属性,我重新启动了服务器,但我无法完成它.

java logging log4j log4j2

42
推荐指数
2
解决办法
4万
查看次数

是否有良好的Java库可以帮助构建命令行应用程序?

我需要用Java编写一个简单的命令行应用程序.使用一个负责解析命令的库并处理标志和可选/强制参数之类的事情会很好.

UPDATE

内置TAB完成的东西会特别棒.

java shell command-line interactive picocli

40
推荐指数
4
解决办法
2万
查看次数

Log4j2为什么要在log4j上使用它?

我必须遗漏一些东西,但我现在已经看了几天了,但为什么你会在log4j上使用log4j2(性能除外)?

从我到目前为止看到的,log4j2被宣传为更简单的配置,但它实际上要复杂得多(现在已经三天了,我仍然无法在我的主目录中写日志).自动配置对我来说根本不起作用(或者至少我无法使其工作),配置文件本身在结构上要复杂得多,并且在运行时添加内容以帮助诊断变得更加困难.

所以除了性能之外还有什么理由使用log4j2而不是原始的log4j?

java logging log4j log4j2

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

适用于Java的最佳CLI解析器

哪种Java解析器易于使用且比其他解析器更具可扩展性?

java command-line picocli

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

Log4j2 DefaultRolloverStrategy的max属性如何真正起作用?

RollingRandomAccessFileAppender只配置了一个OnStartupTriggeringPolicyset,但是当我将max属性设置DefaultRolloverStrategy为某个数字时,日志会无限期地生成超过该数量.

这是我的log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <RollingRandomAccessFile 
            name="RollingRAF" 
            fileName="logs/app.log"
            filePattern="logs/app-%d{dd-MMM-yyyy@HH.mm.ss}.log">
            <PatternLayout>
                <Pattern>%d %p %c{1.} %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy />
            </Policies>
            <DefaultRolloverStrategy max="5"/>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <Logger name="myLogger" level="warn">
            <AppenderRef ref="RollingRAF"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

是因为我的名字模式中没有迭代器吗?

是因为我的文件名精度设置为秒?

是因为我只有OnStartupTriggeringPolicy这套?

或者这里发生了什么?

我的目标是设置滚动配置,记录最近5次应用程序运行.

java configuration logging rollingfileappender log4j2

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

混合log4j 1.x和log4j 2

我有一个使用log4j2编写的新应用程序,以利用它的一些新功能.它使用的其中一个库有点旧,用log4j 1.x构建.我遇到一个问题,即应用程序中的新代码写入日志,但旧库中的代码不会写入日志.我甚至有一个类是旧库中某个东西的子类,也是旧库中的代码调用,这个代码也不会写入日志.我已将应用程序配置为使用log4j2版本2.0.2,并且在将旧库引用为maven依赖项时明确排除了log4j.

如何让旧库中的代码登录到与我的新代码相同的文件中?

重写旧库应该被认为是最后的选择

java logging log4j log4j2

24
推荐指数
1
解决办法
9100
查看次数

使用单个log4j2 xml文件配置log4j2和log4j

我已将我的应用程序迁移到log4j 2,并且我已通过log4j2.xml进行了配置

但是,我使用的一些库依赖于log4j 1.如果我使用以下命令运行应用程序:

-Dlog4j.configurationFile=path/to/log4j2.xml
Run Code Online (Sandbox Code Playgroud)

log4j 1抱怨找不到配置文件.我正在使用log4j 2,log4j-1.2-api-2.0-rc1.jar提供的log4j 1.x桥.是否可以使用单个log4j2.xml进行配置?

我尝试过的另一种方法是将log4j和log4j2配置在一起:

-Dlog4j.configurationFile=path/to/log4j2.xml -Dlog4j.configuration=path/to/log4j.xml
Run Code Online (Sandbox Code Playgroud)

我担心的是我的日志配置文件和输出的碎片.我也担心log4j.xml和log4j2.xml之间可能存在冲突.例如,logfile error.log配置为使用log4j 1中的FileAppender和log4j 2中的RollingFileAppender.

有什么建议?

[注意]

这是我看到的错误:

log4j:WARN No appenders could be found for logger (org.apache.activemq.util.ThreadPoolUtils).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)

我正在使用的log4j 2的版本是log4j 2.0 rc1.

[回答]

似乎activemq-5.8.0.jar与log4j 1捆绑在一起.解决方案只是在activemq之前加载log4j 1.x桥.

java logging log4j log4j2

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