在Ubuntu上设置Java日志输出可以通过配置日志框架来实现。以下是几种常见的方法:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.x.x</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.x.x</version>
</dependency>
log4j2.xml
配置文件,并将其放在类路径下(例如src/main/resources
):<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="File" fileName="/path/to/your/logfile.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class MyClass {
private static final Logger logger = LogManager.getLogger(MyClass.class);
public static void main(String[] args) {
logger.debug("This is a debug message");
logger.info("This is an info message");
logger.warn("This is a warning message");
logger.error("This is an error message");
logger.fatal("This is a fatal message");
}
}
logging.properties
文件,并将其放在类路径下:handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.pattern=/path/to/your/logfile.log
java.util.logging.FileHandler.limit=50000
java.util.logging.FileHandler.count=10
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
import java.util.logging.Logger;
import java.util.logging.LogManager;
public class MyClass {
private static final Logger logger = Logger.getLogger(MyClass.class.getName());
public static void main(String[] args) {
try {
LogManager.getLogManager().readConfiguration(MyClass.class.getResourceAsStream("/logging.properties"));
} catch (Exception e) {
logger.severe("Error loading configuration file: " + e.getMessage());
}
logger.info("This is an info message");
logger.warning("This is a warning message");
logger.severe("This is a severe message");
}
}
如果你想要给指定的类配置单独的日志文件输出,可以在log4j.properties
或logging.properties
中进行如下配置:
log4j.properties示例:
log4j.rootLogger=ERROR, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/logs/MyClass.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.logger.MyClass=ERROR, file
logging.properties示例:
handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.pattern=/logs/MyClass.log
java.util.logging.FileHandler.limit=50000
java.util.logging.FileHandler.count=10
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.Logger.getLogger('MyClass').addHandler(new java.util.logging.FileHandler(new java.io.File("/logs/MyClass.log")));
java.util.logging.Logger.getLogger('MyClass').setLevel(java.util.logging.Level.INFO);
通过以上配置,你可以将Java应用程序的日志输出到指定的文件中,并且可以根据需要设置日志级别、格式等信息。