本文将详细讲解如何在Java应用中调整格式日志输出,包括常见的两种方法:使用java.util.logging和使用log4j2。下面我们将结合代码示例来进行讲解。
使用java.util.logging实现格式日志输出
通常情况下,Java应用程序会默认使用java.util.logging作为日志输出框架。如果你也是使用这个框架的开发者,可以按照以下步骤来调整日志格式:
- 创建一个LogManager对象并且通过LogManager类中的静态方法读取日志配置文件。
LogManager.getLogManager().readConfiguration(
new FileInputStream("logging.properties"));
2.在logging.properties配置文件中,我们需要指定如下参数:
handlers= java.util.logging.ConsoleHandler #指定日志处理器
.level = INFO
#设置日志级别,这里设置为INFO,表示info以上的日志信息都会被记录
java.util.logging.ConsoleHandler.level = ALL
#设置日志处理器的日志级别,这里设置为ALL,表示所有日志都会被记录
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
#指定日志处理器的日志格式化工具,这里指定使用java.util.logging.SimpleFormatter
- 将SimpleFormatter设置为自定义的格式化工具,这里我们创建了一个自定义的MyFormatter类,继承了java.util.logging.Formatter类,并重写了格式化方法
public class MyFormatter extends Formatter {
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
@Override
public String format(LogRecord record) {
StringBuilder sb = new StringBuilder();
sb.append(new Date(record.getMillis()))
.append(" ")
.append(record.getLevel().getName())
.append(" [")
.append(record.getSourceClassName())
.append(".")
.append(record.getSourceMethodName())
.append("] - ")
.append(formatMessage(record))
.append(LINE_SEPARATOR);
return sb.toString();
}
}
下面是完整的代码示例:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class MyLogger {
public static void main(String[] args) throws IOException {
LogManager.getLogManager().readConfiguration(
new FileInputStream("logging.properties"));
Logger logger = Logger.getLogger(MyLogger.class.getName());
logger.info("Hello world");
}
}
class MyFormatter extends Formatter {
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
@Override
public String format(LogRecord record) {
StringBuilder sb = new StringBuilder();
sb.append(new Date(record.getMillis()))
.append(" ")
.append(record.getLevel().getName())
.append(" [")
.append(record.getSourceClassName())
.append(".")
.append(record.getSourceMethodName())
.append("] - ")
.append(formatMessage(record))
.append(LINE_SEPARATOR);
return sb.toString();
}
}
使用log4j2实现格式日志输出
log4j2是一个流行的Java日志框架,允许用户以非常灵活的方式进行日志配置。下面我们展示如何在Java应用程序中使用log4j2来实现格式日志输出:
- 首先,我们需要添加log4j2的依赖,这里我们使用maven来管理依赖:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
- 在log4j2.xml配置文件中,我们需要指定如下参数:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" name="MyApp" packages="">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
这里我们使用了一个基本的Console appender,使用PatternLayout指定日志格式。
- 创建Logger对象并使用指定名称的logger进行日志记录。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class MyLogger {
private static final Logger logger = LogManager.getLogger(MyLogger.class);
public static void main(String[] args) {
logger.info("Hello, World!");
}
}
下面是完整的代码示例:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class MyLogger {
private static final Logger logger = LogManager.getLogger(MyLogger.class);
public static void main(String[] args) {
logger.info("Hello, World!");
}
}
希望本文对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 调整格式日志输出 - Python技术站