外贸门户网站建设,公众号版网站建设,广州美霖室内设计学校,平面设计招聘唐山1.下载log4j
jar包https://dlcdn.apache.org/logging/log4j/2.20.0/apache-log4j-2.20.0-bin.zip
2. 我只要到核心包 #xff0c;看需要
sources是源码包#xff0c;可以看到说明。在IDEA里先加入class jar后#xff0c;再双击这个class jar包或或右键选Navigate ,Add ,…
1.下载log4j
jar包https://dlcdn.apache.org/logging/log4j/2.20.0/apache-log4j-2.20.0-bin.zip
2. 我只要到核心包 看需要
sources是源码包可以看到说明。在IDEA里先加入class jar后再双击这个class jar包或或右键选Navigate ,Add ,选对应的Sources.jar 3.示例代码
package util;import org.apache.log4j.*;
import org.apache.log4j.spi.LoggingEvent;import javax.swing.*;
import java.awt.*;
import java.io.*;public class Log4j {public static final Logger LOGGER Logger.getLogger(Log4j.class);private static JTextArea textArea;public static void main(String[] args) {// 创建并显示UI界面createUI();// 配置log4j日志记录器configureLogger(textArea);// 示例日志输出LOGGER.debug(Debug log message);LOGGER.info(Info log message);LOGGER.warn(Warn log message);LOGGER.error(Error log message chenhao);// 关闭log4j日志记录器LogManager.shutdown();}private static void createUI() {JFrame frame new JFrame(Log Example);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 300);textArea new JTextArea();textArea.setEditable(false);JScrollPane scrollPane new JScrollPane(textArea);frame.getContentPane().add(scrollPane, BorderLayout.CENTER);frame.setVisible(true);}//配置为 界面输出 和 文件输出public static void configureLogger(JTextArea textArea) {// 创建UI界面输出的AppenderJTextAreaAppender uiAppender new JTextAreaAppender(textArea);//uiAppender.setLayout(new PatternLayout(%d{yyyy-MM-dd HH:mm:ss} %c [%p] - %m%n));uiAppender.setLayout(new PatternLayout(%d{yyyy-MM-dd HH:mm:ss} [%p] - %m%n));uiAppender.activateOptions();Logger.getRootLogger().addAppender(uiAppender);// 创建文件输出的Appendertry {FileAppender fileAppender new FileAppender(new PatternLayout(%d{yyyy-MM-dd HH:mm:ss} [%p] - %m%n), logs/logfile.log);fileAppender.setAppend(true); // 如果true则追加到现有的日志文件末尾如果false则覆盖文件中的现有内容fileAppender.activateOptions();// 将Appender添加到日志记录器Logger.getRootLogger().addAppender(fileAppender);} catch (IOException e) {e.printStackTrace();return;}// 设置日志记录级别LOGGER.setLevel(Level.DEBUG);}//配置为 控制台输出 和 文件输出public static void configureLogger() {// 创建控制台输出的AppenderConsoleAppender consoleAppender new ConsoleAppender();consoleAppender.setLayout(new PatternLayout(%d{yyyy-MM-dd HH:mm:ss} %c [%p] - %m%n));consoleAppender.setTarget(ConsoleAppender.SYSTEM_OUT);consoleAppender.activateOptions();// 创建文件输出的Appendertry {FileAppender fileAppender new FileAppender(new PatternLayout(%d{yyyy-MM-dd HH:mm:ss} %c [%p] - %m%n), logs/logfile.log);fileAppender.setAppend(true); // 如果true则追加到现有的日志文件末尾如果false则覆盖文件中的现有内容fileAppender.activateOptions();// 将Appender添加到日志记录器Logger.getRootLogger().addAppender(fileAppender);} catch (IOException e) {e.printStackTrace();return;}// 设置日志记录级别LOGGER.setLevel(Level.DEBUG);}private static class JTextAreaAppender extends AppenderSkeleton {private JTextArea textArea;public JTextAreaAppender(JTextArea textArea) {this.textArea textArea;}Overrideprotected void append(LoggingEvent loggingEvent) {String logMessage layout.format(loggingEvent);SwingUtilities.invokeLater(() - textArea.append(logMessage));}Overridepublic void close() {// Nothing to do here}Overridepublic boolean requiresLayout() {return true;}}
}
4.格式化 解释一下%d{yyyy-MM-dd HH:mm:ss} %c [%p] - %m%n每个部分的含义 %d{yyyy-MM-dd HH:mm:ss}表示输出日志的时间戳使用指定的日期时间格式yyyy-MM-dd HH:mm:ss。 %c表示输出日志的类名。 [%p]表示输出日志的级别例如DEBUG、INFO、WARN、ERROR。 -%m表示输出日志的消息。 %n表示换行符。