0
我想在我的Spring Boot應用程序上配置記錄器 - 我只是從Spring MVC 2遷移到Spring Boot。所以所有的配置都已到位。我已將log4j.properties
文件放在應用程序類路徑中,即application.properties
文件所在的位置。log4j記錄器不寫入日誌文件
的Logger
類的定義如下:
public class Logger {
public static void Log(String className, String methodName, String message, int loggingLevel) {
Log4jLogger log4jLogger = Log4jLogger.getInstance();
org.apache.log4j.Logger logger = log4jLogger.getLogger();
switch (loggingLevel) {
case 1: {
logger.error(className + " | " + methodName + " | " + message);
break;
}
case 2:
case 3: {
logger.info(className + " | " + methodName + " | " + message);
break;
}
case 4:
case 5: {
logger.debug(className + " | " + methodName + " | " + message);
break;
}
}
}
}
import java.io.IOException;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log4jLogger {
private Logger logger;
private static Log4jLogger log_instance;
public Log4jLogger() {
String logFileName;
Properties properties = new Properties();
try {
properties.load(getClass().getClassLoader().getResourceAsStream("log4j.properties"));
} catch (IOException e) {
e.printStackTrace();
}
logFileName = properties.getProperty("log4j.appender.A2.file");
if (logFileName.equals("")) {
logFileName = "temp";
} else {
logFileName = logFileName.substring(logFileName.lastIndexOf("/") + 1, logFileName.lastIndexOf("."));
}
logger = org.apache.log4j.Logger.getLogger(logFileName);
PropertyConfigurator.configure(properties);
log_instance = this;
}
public static Log4jLogger getInstance() {
if (log_instance == null) {
log_instance = new Log4jLogger();
}
return log_instance;
}
public Logger getLogger() {
return logger;
}
}
對於需要記錄器的任何類,我只要致電:
Logger.Log("ClassName", "MethodName", "message Start...", 5);
它用於登錄前的文件C:/logs/temp.log
中,但它似乎不適用於Spring Boot。只有信息日誌被打印在控制檯上。
配售這裏的內容log4j.properties
:
# Log4j configuration file.
log4j.rootCategory=INFO, A1
log4j.logger.orion=DEBUG, A2
log4j.logger.orionJUnit=DEBUG, A3
log4j.appender.A1.Threshold=WARN
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p %d{ISO8601} [%t] - %m%n
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=C:/logs/temp.log
log4j.appender.A2.datePattern='.'yyyy-MM-dd
log4j.appender.A2.append=true
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-5p %d{ISO8601} [%t] - %m%n
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.file=c:/temp1/logs/logs.log
log4j.appender.A3.datePattern='.'yyyy-MM-dd
log4j.appender.A3.append=true
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%-5p %d{ISO8601} [%t] - %m%n
什麼我可能會丟失任何指針?
你不應該定義你自己的'Logger'類排除的logback罐子。如果你想創建一個新的記錄器,你可以在配置文件中這樣做。還有你要記錄的類,稱之爲'A',做類似'Logger logger = Logger.getLogger(A.class);' – Ishnark
檢查部分76.1.1配置logback僅用於鏈接https://輸出的文件docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html –
不想替換舊的代碼,所以試圖讓它工作。無論如何,我現在已經用@KishorRaskar提到的logback.xml替換它了 – Reema