有人可以解释一下这个类的签名的含义吗?
org.apache.logging.log4j.core.appender
Class RollingFileAppender.Builder<B extends RollingFileAppender.Builder<B>>
如文档所述 - Log4j2 apidocs
我把它读为Buildertype B,其中B extendsBuilder为 type B,这让我很困惑。
另外,这是一个static类,它也有一个构造函数。这是正常的吗?有人可以分享一个可以帮助我理解并在程序中使用它的参考吗?
PS - 关于我在这里所做的事情 - 我正在修改 log4j 代码以使其与 log4j2 兼容,其中在 util 类中有一个RollingFileAppender创建的 using构造函数。RollingFileAppender
我正在log4j2中搜索一个简单的方法来将日志附加到textArea.
在log4j中,这可以通过扩展AppenderSkeleton类来实现,但我在log4j2中找不到类似的机制.
此外,使用重新路由系统输出
System.setOut(myPrintStream);
Run Code Online (Sandbox Code Playgroud)
也不起作用.
是否有可能使用log4j2?
我正在使用 log4j2 框架,在每种方法中,我都试图通过在开始时调用 entry() 并在最后调用 exit() 来记录进入和退出,但这些方法没有打印任何日志信息。请任何人都可以帮助我我是这个框架的新手。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console target="SYSTEM_OUT" name="CONSOLE">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console" />
</Root>
<Root level="trace">
<AppenderRef ref="CONSOLE" />
</Root>
<Root level="ERROR">
<AppenderRef ref="CONSOLE" />
</Root>
<Root level="info">
<AppenderRef ref="CONSOLE" />
</Root>
<Root level="debug">
<AppenderRef ref="CONSOLE" />
</Root>
</Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud) 我们log4j2在我们的系统中广泛使用,并使用它进行配置log4j2.xml.
现在我需要一个运行的新应用程序,jobs我想分别捕获在时间X和Y之间产生的所有日志并将其放入数据库中.从我们的框架正常记录应该像往常一样(到文件或log4j2.xml指向的地方),但从时间X到时间Y.
我还希望捕获所有日志记录,最好是一个字符串列表或可以保存在数据库表中的东西.
我的想法是创建一个新的Appender(捕获所有日志输出)并动态添加/删除该appender以启动和停止日志记录?那会有用吗?我也可以在框架类中重新配置记录器吗?
我正在使用 log4j2
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
和一个非常基本的配置xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</layout>
</appender>
<category name="org.apache.log4j.xml">
<priority value="info" />
</category>
<Root>
<priority value ="debug" />
<appender-ref ref="STDOUT" />
</Root>
</log4j:configuration>
Run Code Online (Sandbox Code Playgroud)
由于某种原因,日志记录不起作用。我正进入(状态
ERROR StatusLogger Error parsing /home/sfalk/workspace/java/lazy-model-access/lamoa-parent/lamoa-server/target/classes/log4j2.xml
ERROR StatusLogger No logging configuration
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
我使用 log4j 版本 2 作为 Tomcat 8 的记录器,现在问题是 catalina.out 文件不是每天轮换。我的 log4j.property 文件如下,
log4j.rootLogger = INFO, CATALINA, CONSOLE
# Define all the appenders
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER …Run Code Online (Sandbox Code Playgroud) 作为一个完整的初学者,我如何设置 Log4j2(在 Netbeans 中)以将一些消息记录到控制台,而将其他消息记录到文件中?(我只找到了旧版本的指南,这让我遇到了麻烦,因为 XML 发生了变化。基本上,我正在更新此线程中所做的工作,因为我认为这是一个好主意,但缺少一些提示)
Log4j2支持JSON Layout,我在log4j2.xml中添加了一个额外的自定义字段:
<JsonLayout compact="true" eventEol="true" stacktraceAsString="true">
<KeyValuePair key="@timestamp" value="$${date:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'}"/>
</JsonLayout>
Run Code Online (Sandbox Code Playgroud)
一般情况下,所有工作正常,但此日志由Filebeats处理,并假定日期以UTC表示.
所有日志条目都具有本地时区的日期值.
是否有可能以UTC格式输出日期?
这是配置 log4j2.xml 文件的代码。问题是声纳在 setConfiguration 处显示安全热点问题。如何避免呢?
String propFile = "log4j2.xml";
LoggerContext logcontext = (org.apache.logging.log4j.core.LoggerContext)
LogManager.getContext(false);
File logFile = new File(propFile);
logcontext.setConfigLocation(logFile.toURI());
Run Code Online (Sandbox Code Playgroud) 我们正在将 Java 用于我们的一项服务,该服务使用 log4j2 库。截至 2021 年 12 月 10 日,发现利用 log4j2 执行 Java 远程代码的漏洞。我想知道解决这个问题的最佳方法是什么?是否适合只使用另一个 Java 日志库?或者是否有 log4j2 的配置,以便我们\xe2\x80\x99 不必经历更改日志库的所有麻烦?
\n我们正在使用 Maven 项目,需要检查我们在 java 应用程序中使用的是 log4j 或 log4j2。请指导我下面的最佳实践
是我的 pom.xml
<properties>
<!-- Avoid warnings about platform encoding -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<powermock.version>1.6.2</powermock.version>
<log4j.version>2.3</log4j.version>
</properties><dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency><dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>${log4j.version}</version>
</dependency>
</project>
Run Code Online (Sandbox Code Playgroud)