标签: log4j2

禁用库的日志输出

在 java 程序中,我使用log4j2作为我的(调试)输出。当使用第三方库时,我想禁用这些库的日志输出。我怎样才能做到这一点?

实际上这对我来说似乎很简单,但我找不到解决方案。我不可能是唯一一个在寻找这个的人吧?

java log4j2

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

当应用程序在 Linux 中通过 crontab 运行时,Log4j2 日志记录不起作用

我有一个java应用程序,在其中实现了日志记录。这是文件

log4j2.xml

<configuration xmlns:xi="http://www.w3.org/2001/XInclude" status="WARN">
    <xi:include href="log4j-xinclude-appenders.xml" />
    <xi:include href="log4j-xinclude-loggers.xml" />  
</configuration>
Run Code Online (Sandbox Code Playgroud)

log4j-xinclude-appenders.xml

<appenders>

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

    <Routing name="RoutingAppender">
        <Routes pattern="${ctx:logFileName}">
            <Route>
                <RollingFile name="Rolling-${ctx:logFileName}"
                         fileName="logs/${ctx:logFileName}.log"
                         filePattern="logs/${ctx:logFileName}-%d{MM-dd-yyyy}-%i.log">
                    <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %c{36} %l: %msg%n"/>
                    <SizeBasedTriggeringPolicy size="5 MB" />
                    <DefaultRolloverStrategy min="1" max="4" />
                </RollingFile>
            </Route>

            <Route ref="Console" key="${ctx:logFileName}"/>
        </Routes>
    </Routing>

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

log4j-xinclude-loggers.xml:

<loggers>

    <root level="warn">
        <appender-ref ref="Console" />
    </root>

    <logger name="abc.def.ghi.regulators" level="info" additivity="false">
        <appender-ref ref="RoutingAppender" />       
    </logger>

    <logger name="org.apache" level="info" />
    <logger name="org.springframework" level="info" …
Run Code Online (Sandbox Code Playgroud)

linux cron java-8 log4j2

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

mule esb 中不同级别的日志记录有什么区别?

在 mule esb 中,当我拖动记录器组件时,我可以看到有 5 个日志级别:

调试、错误、信息、跟踪和警告。这5个有什么区别,什么时候用什么?

提前致谢

logging mule log4j2 mule-component

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

Log4j2 路由附加器 JavaScript 配置错误

我正在使用 lombok 的 log4j2 记录器,我需要根据 ThreadContext 映射配置路由附加程序。路由键由脚本确定。这是整个 log4j2.xml 配置文件:

<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%highlight{%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %c{1}: %msg%n%throwable}"/>
    </Console>

    <RollingFile name="GeneralRollingFile" filename="log/test-log.log"
                 filepattern="log/test-log-%d{yyyy-MM-dd HH:mm:ss}.log">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %c{1}: %msg%n%throwable"/>
        <Policies>
            <SizeBasedTriggeringPolicy size="25 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="20"/>
    </RollingFile>

    <Routing name="Routing">

        <Routes>
            <Script name="RoutingInit" language="JavaScript">
                <![CDATA[
                if (logEvent.getContextMap().containsKey("operation-1")) {
                    return "operation-1";
                } else if (logEvent.getContextMap().containsKey("operation-2")) {
                    return "operation-2";
                } else {
                    return "general";
                }
            ]]>
            </Script>

            <Route key="general" ref="GeneralRollingFile"/>

            <Route key="operation-1"> 
                <RollingFile name="operation-1-rolling"
                             fileName="log/operation-1/${ctx:operation-1}.log"
                             filePattern="log/operation-1/${ctx:operation-1}-%d{yyyy-MM-dd HH:mm:ss}.log">

                    <PatternLayout pattern="%d{yyyy-MM-dd …
Run Code Online (Sandbox Code Playgroud)

javascript java logging appender log4j2

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

在 log4j2 中记录 PID 而不使用线程上下文

我需要在 log4js 日志中包含 PID。我看到很多使用线程上下文的例子。但是,这些需要在创建的每个单独线程上进行设置。我被迫不这样做。

我需要一个解决方案,要么不使用线程上下文,要么可以在所有线程上下文上为可能从任何任意类创建的任何线程设置 PID。

java configuration logging log4j log4j2

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

如何设置 log4j2 asyncQueueFullPolicy

我正在使用 log4j-core-2.5 进行日志记录,并且我想在日志记录队列已满时丢弃项目。我确定可以通过使用 log4j 中的 log4j2.asyncQueueFullPolicy 配置属性来应用此功能。

有人可以帮助我如何在我的应用程序中应用此配置吗?

我正在使用这样的文件配置......

Configurator.initialize("", "log4j-node.xml");
Run Code Online (Sandbox Code Playgroud)

我的配置文件看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{dd-MMM HH:mm:ss.SSS} %logger{1}.%t %-5level] %msg%n"/>
        </Console>

        <RollingFile name="DefaultFile" fileName="../logs/app.log"
                 filePattern="../logs/app-%d{MM-dd-yyyy}-%i.log" bufferedIO="true" bufferedSize="32000" immediateFlush="false">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            ...

        </RollingFile>

        <Async name="AsyncFile">
            <AppenderRef ref="DefaultFile"/>
            <LinkedTransferQueue/>
        </Async>

        <Async name="AsyncConsole">
            <AppenderRef ref="Console"/>
            <LinkedTransferQueue/>
        </Async>

    </Appenders>

    <logger name="org.hibernate">
        <level value="debug" />
    </logger>

    <Loggers>
        <Root level="TRACE">
            <AppenderRef ref="AsyncConsole"/>
            <AppenderRef ref="AsyncFile"/>
        </Root>
        <Logger name="org.hibernate.SQL" level="error" />
        <!-- Log all JDBC …
Run Code Online (Sandbox Code Playgroud)

java configuration logging log4j log4j2

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

Java日志:无法加载slf4j,但我正在使用log4j2。怎么修?

当我运行 jar 文件时,出现以下错误:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Run Code Online (Sandbox Code Playgroud)

问题是我没有使用 slf4j,我使用的是 log4j2。它由依赖项使用。Maven 正确地将 org.slf4j:slf4j-api 包含为我正在使用的库的传递依赖项。

我该如何摆脱这个警告?我什至不想记录这种依赖关系的问题。

java logging slf4j log4j2

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

为 log4j 添加微秒级

指的是这个

如何添加微秒级日志记录,如何为此创建自定义模式格式化程序?

我也尝试过 log4j2,但它最终给出了

12:42:05,972803200 [main] DEBUG Log4j2Test - Debug Message Logged !!!
12:42:05,975803200 [main] INFO  Log4j2Test - Info Message Logged !!!
12:42:05,975803200 [main] ERROR Log4j2Test - Error Message Logged !!!
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它总是给出 803200 微秒和纳秒。

我的 log4j2.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
    <Console name="console" target="SYSTEM_OUT">
    <PatternLayout pattern="%d{ABSOLUTE_NANOS} [%t] %-5level %logger{36} - %msg%n"/>
       <!--  <PatternLayout
            pattern="[%-5level] %d{ABSOLUTE_NANOS} [%t] %c{1} - %msg%n" /> -->
    </Console>
</Appenders>
<Loggers>
    <Root level="debug" additivity="false">
        <AppenderRef ref="console" />
    </Root>
</Loggers> 
Run Code Online (Sandbox Code Playgroud)

java log4j log4j2

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

Log4j2 SMTP-Appender“必须首先发出 STARTTLS 命令”

我正在尝试通过 java 中的电子邮件发送严重性为“错误”的日志条目。在我的 log4j2.xml 文件中,我有以下 SMTP 附加程序:

<SMTP>
name="Mail"
subject="Error Log"
to="receiver@domain.com"
from="sender@domain.com"
smtpHost="SMTP-Host"
smtpPort="587"
smtpPassword="[password]" 
smtpUsername="email@domain.com"
smtpDebug="true"
ignoreExceptions="false"
bufferSize="4"
smtpProtocol="smtp">
</SMTP>
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的程序(其中包含一个主要记录字符串)时,会发生以下错误:

DEBUG: setDebug: JavaMail version 1.4.7
13:13:44.469 [main] ERROR Main - Test Error
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "SMTP-Host", port 587, isSSL false
220 SMTP-Host ESMTP Postfix (Debian/GNU)
DEBUG SMTP: connected to host "SMTP-Host", port: 587

EHLO MAXPC
250-SMTP-Host
250-PIPELINING …
Run Code Online (Sandbox Code Playgroud)

java email smtp smtpappender log4j2

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

如何使用 SLF4J 和 Log4j 在日志消息中包含标记

我通过以下方式在 SLF4J 和 Log4j 中使用标记

final Marker marker = MarkerFactory.getMarker("boom");
logger.info(marker, "BLAH BLAH: {}", stuff);
Run Code Online (Sandbox Code Playgroud)

如何在输出的日志消息中包含标记。例如,我希望上面的代码输出如下内容:

INFO - (boom): BLAH BLAH: something
Run Code Online (Sandbox Code Playgroud)

目前标记未显示

INFO: BLAH BLAH: something
Run Code Online (Sandbox Code Playgroud)

我一直在尝试找到一种在 log4j.properties 中配置此功能的方法,但无法找到有关显示标记的任何信息。

java log4j slf4j log4j2

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