В настоящее время я использую 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
Я пытался сохранить этот файл в папке ресурсов, а также установить параметры vm в файле конфигурации log4j.Однако, несмотря на это, регистратор только выводит данные на консоль, а файл даже не создается.Обратите внимание, что мой 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");
}
}