使用log4j 2编写简单日志

时间:2014-06-27 19:05:20

标签: java log4j2

我到处寻找,但找不到任何关于如何使用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进行日志记录,以便我以后可以读取它们并检测我的服务器代码中的任何错误/崩溃。

提前致谢!

2 个答案:

答案 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