簡體   English   中英

使用 log4j 2 編寫簡單日志

[英]Write simple logs using log4j 2

我到處找,但找不到任何關於如何使用 log4j 2 的指南(對我來說很有意義)。作為背景,我對 log4j 或任何類型的日志記錄都非常陌生,並且最接近日志記錄我'曾經得到的是 System.out.println() 或 Java 中的 PrintWriter (如果這甚至被認為是日志記錄)。

我去Apache Log4j 2 頁面下載了 jar 文件,但是有 36 個 jar 文件,我不知道要使用哪個。

任何人都可以讓我開始了解如何從我的服務器代碼(在 Java 中)將簡單的字符串消息附加到日志文件中嗎? 例如,當用戶連接到我的服務器時,我有一個簡單的

System.out.println("user A connected to server at " + time);

代碼,在實際使用中對我沒有好處。 我想使用 Log4j 將所有 System.out 語句替換為日志記錄,以便稍后閱讀它們並檢測服務器代碼中的任何錯誤/崩潰。

提前致謝!

這是一個網絡應用程序嗎? 換句話說,它有 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] -> 單擊 user Entries -> Advanced -> 選擇 Add Folder -> 和添加放置文件的目錄。

在您的課程中,導入:

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.FileAppender;

然后實例化您的記錄器對象:

static Logger log = Logger.getLogger(LdapPurge.class.getName());

試試看,看看它是否有效。

我一直在使用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM