在大學,我們現在正在制作一個專案,作為其中的一部分,我們嘗試添加一個部分,該部分將使用 log4j 將所有錯誤和例外輸出到外部檔案。
我們希望有一個檔案用于錯誤,一個用于警告,一個用于同時處理所有內容,它還將包含一切正確的訊息。為了徹底測驗,我們添加了一些應該發生的錯誤。此外,我們希望將所有例外記錄為警告,并將它們輸出到單獨的檔案中。
在當前階段,存在一個問題:程式創建了四個檔案,需要三個,還有一個是它自己添加的,其中還包含除錯訊息。但是,出于某種原因,有關警告和錯誤的資訊只進入 INFO 日志,同時也應該進入他們自己的日志檔案。
回滾檔案:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<appender name="ERRORS-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.errors</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<appender name="WARNINGS-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.warnings</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<appender name="INFO-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.info</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<!-- additivity=false ensures analytics data only goes to the analytics log -->
<logger name="errors" level="ERROR" additivity="true">
<appender-ref ref="ERRORS-FILE"/>
</logger>
<logger name="warnings" level="WARN" additivity="true">
<appender-ref ref="WARNINGS-FILE"/>
</logger>
<logger name="info" level="INFO" additivity="true">
<appender-ref ref="INFO-FILE"/>
</logger>
<root>
<appender-ref ref="FILE"/>
</root>
我創建的 LoggerManager 類用于從其他類輸出日志:
package com.evgenie_tomer_itay.CouponSystemSpringBoot.utilities;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerManager
{
private final static Logger loggerErrors = LoggerFactory.getLogger("errors");
private final static Logger loggerWarnings = LoggerFactory.getLogger("warnings");
private final static Logger loggerInfo = LoggerFactory.getLogger("info");
private static String getCurrentDateAsString()
{
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date date = new Date(System.currentTimeMillis());
return formatter.format(date);
}
public static void addLogInfo(String log)
{
LoggerManager.loggerInfo.info(log);
}
public static void addLogWarnings(String log)
{
LoggerManager.loggerWarnings.info(log);
LoggerManager.loggerInfo.info(log);
}
public static void addLogErrors(String log)
{
LoggerManager.loggerErrors.info(log);
LoggerManager.loggerInfo.info(log);
}
}
依賴項:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
這部分在 main 開始時創建檔案:
public static void createLogFiles()
{
String desktopPath = System.getProperty("user.home") File.separator "Desktop";
String fileName = desktopPath "\\CouponSystemSpringBootLog";
System.setProperty("log.name",fileName);
}
我如何從任何類創建日志的示例:
LoggerManager.addLogErrors("錯誤");
現在,“addLogInfo”再次起作用,但“addLogError”或“addLogWarning”不起作用。
請幫助了解做錯了什么。
先感謝您!
uj5u.com熱心網友回復:
public static void addLogInfo(String log) {
myLogger.info(log);
}
public static void addLogErrors(String log)
{
myLogger.info(log);
}
你有類似這些方法的東西,用來區分資訊和錯誤日志,但方法的名稱對此沒有影響。
您需要呼叫記錄器的正確方法:
public static void addLogInfo(String log) {
myLogger.info(log);
}
public static void addLogErrors(String log) {
myLogger.error(log);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/393806.html
