我到处寻找,但找不到任何关于如何使用log4j 2的指南(对我来说很有意义)。作为背景,我对log4j或任何类型的日志记录都非常新,并且最接近我得到的日志记录是Java中的System.out.println()或PrintWriter(如果这甚至被认为是日志记录)。
我去了Apache Log4j 2 page下载了jar文件,但是有36个jar文件,我不知道要使用哪个。
任何人都可以开始介绍如何从我的服务器代码(Java)中将简单的String消息附加到日志文件中吗?例如,当用户连接到我的服务器时,我有一个简单的
System.out.println("user A connected to server at " + time);
代码,在实际使用过程中对我没用。我想将所有我的System.out语句替换为使用Log4j进行日志记录,以便我以后可以读取它们并检测我的服务器代码中的任何错误/崩溃。
提前致谢!
答案 0 :(得分:0)
这是一个webapp吗?换句话说,它有一个WEB-INF文件夹吗?如果是这样,请创建一个简单的log4j.properties文件,其中包含以下内容:
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=log.out
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
确保这一行:
log4j.appender.FILE.File=log.out
你有一个实际为它创建的文件。我以log.out为例。
将其放在WEB-INF文件夹中。
如果是Maven项目,请在项目中找到该文件的位置,然后右键单击Run-> Run Configuration - > [classpath tab] - >点击用户条目 - >高级 - >选择添加文件夹 - >并添加放置文件的目录。
在您的课程中,导入:
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.FileAppender;
然后实例化您的记录器对象:
static Logger log = Logger.getLogger(LdapPurge.class.getName());
试一试,看看它是否有效。
答案 1 :(得分:0)
我一直在使用Log4j 2.x版,最近写了一篇有关其用法的文章。您可以查看它,也许对您有帮助:
要使用Log4j 2.x,需要2个库:
<dependency>
<groupId> org.apache.logging.log4j </groupId>
<artifactId> log4j-core </artifactId>
<version> 2.8.2 </version>
</dependency>
<dependency>
<groupId> org.apache.logging.log4j </groupId>
<artifactId> log4j-api </artifactId>
<version> 2.8.2 </version>
</dependency>
在资源文件夹中创建log42.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!--https://logging.apache.org/log4j/2.x/manual/configuration.html-->
<Configuration status="TRACE" monitorInterval="30">
<!-- The properties that are needed in the configuration of the appenders are defined | property definition -->
<Properties>
<!--The pattern is defined. For writing in logs -->
<Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} [%t] %-5level %logger{36} - %msg%n</Property>
<!--Storage location is defined -->
<Property name="APP_LOG_ROOT">var/log/tomcat0</Property>
</Properties>
<Appenders>
<!-- Configuration for writing events to console (cmd, ide, terminal)-->
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}" />
</Console>
<!--
Configuration for writing debug events.
for more information about properties: https://logging.apache.org/log4j/2.x/manual/appenders.html
-->
<RollingFile name="debugLog"
fileName="${APP_LOG_ROOT}/logs/automatizador-debug.log"
filePattern="${APP_LOG_ROOT}/logs/$${date:yyyy-MM}/automatizador-debug-%d{yyyy-MM-dd}-%i.log.gz">
<LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT"
onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<!--Define the logger-->
<Loggers>
<!--only log events from type "debug" for the package: com.advanced.development -->
<Logger name="com.advanced.development" additivity="false"
level="trace">
<AppenderRef ref="debugLog" />
<AppenderRef ref="Console" />
</Logger>
<Root level="error">
<AppenderRef ref="debugLog"/>
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
有关更多详细信息:https://su9.co/9BaE74E