我目前正在将log4j-api-2.11.1
和log4j-core-2.11.1
用于Gradle Java项目(jar
中都包含build.gradle
文件)。我一直在尝试创建包装Java日志记录类,以便可以选择记录到console
,file
或syslog
。
以下是我的log4j.properties
:
# Root logger option
log4j.rootLogger=DEBUG, stdout, file, syslog
##### ALL outputs currently set to be a ConsoleAppender
log4j.appender.stdout=org.apache.logging.log4j.core.appender.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
log4j.appender.studout.threshold=warn
##### File appender definition ######
log4j.appender.file=org.apache.logging.log4j.core.appender.RollingFileAppender
log4j.appender.file.File=article_storage.log
log4j.appender.file.Append=true
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
log4j.appender.file.threshold=error
##### Syslog configuration #####
log4j.appender.syslog=org.apache.logging.log4j.core.appender.SyslogAppender
log4j.appender.Syslog.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t]
log4j.appender.syslog.syslogHost=localhost
log4j.appender.syslog.facility=LOCAL3
log4j.appender.syslog.threshold=debug
我尝试将此文件存储在资源文件夹下,以及设置log4j配置文件的vm选项。但是,尽管如此,记录器仅输出到控制台,甚至没有创建文件。请注意,我的logger = LogManager.getLogger("file");
似乎只会将文件追加到输出中。
有两件事,似乎无法读取log4j属性文件,即使读取了该文件,我也可能无法正确执行操作。
以下是其他文件:
Log.java:
package storage.util;
import org.apache.logging.log4j.*;
public class Log {
private String _ident;
private Logger logger;
public Log(String ident) {
this(ident, LogType.SYSLOG);
}
public Log(String ident, LogType type) {
this._ident = ident;
logger = LogManager.getLogger("file");
}
public void info(String message) {
logger.info("[INFO]" + "[" + _ident + "] " + message);
}
public void debug(String message) {
logger.debug("[DEBUG]" + "[" + _ident + "] " + message);
}
public void warn(String message) {
logger.warn("[WARNING]" + "[" + _ident + "] " + message);
}
public void error(String message) {
logger.warn("[ERROR]" + "[" + _ident + "] " + message);
}
enum LogType {CONSOLE, FILE, SYSLOG}
}
TestLog.java:
package storage.util;
public class TestLog {
public static void main(String args[]) {
Log.LogType logType = Log.LogType.FILE;
Log log = new Log("TestLog", logType);
log.debug("This is a debug");
}
}