开源日志记录工具log4j
日志
使用log4j日志记录步骤
1、在项目中加入log4j的JAR文件
2、创建log4j.properties文件
3、配置日志信息
解决编写乱码
# 设置Logger输出级别和输出目的地 # log4j.rootLogger=debug,stdout,logfile # 把日志信息输出到控制台 # log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout # 把日志信息输出到文件中 # log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=jbit.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}%l %F %p %m%n
4、使用log4j记录日志信息
import java.util.InputMismatchException; import java.util.Scanner; import org.apache.log4j.Logger; public class Test { private static Logger logger = Logger.getLogger(Test.class.getName()); public static void main(String[] args) { try { Scanner input = new Scanner(System.in); System.out.print("请输入第一个整数:"); int num1 = input.nextInt(); logger.debug("输入的第一个整数" + num1); System.out.print("请输入第二个整数:"); int num2 = input.nextInt(); logger.debug("输入的第二个整数" + num2); int jq = num1 / num2; String str = String.format("%d%d=%d", num1, num2, num1 / num2); logger.debug("输出结果:" + str); System.out.println(jq); } catch (InputMismatchException e) { logger.error(e.getMessage() + "输入不匹配"); } catch (Exception e) { logger.error(e.getMessage() + "除数不能为0"); e.printStackTrace(); } } }
log4j配置文件详解
1. 日志级别
trace:追踪,就是程序推进一下,可以写个trace输出
debug:调试,一般作为最低级别,trace基本不用。
info:输出重要的信息,使用较多
warn:警告,有些信息不是错误信息,但也要给程序员一些提示。
error:错误信息。用的也很多。
fatal:致命错误。级别较高,这种级别不用调试了,重写吧……
机制:如果一条日志信息的级别大于等于配置文件的级别,就记录。
2. 输出源
CONSOLE(输出到控制台)、FILE(输出到文件)等。
3. 布局方式
SimpleLayout:以简单的形式显示
HTMLLayout:以HTML表格显示
PatternLayout:自定义形式显示
在Log4J2中基本采用PatternLayout自定义日志布局。
自定义格式:
%t:线程名称
%p:日志级别
%c:日志消息所在类名
%m:消息内容
%M:输出执行方法
%d:发生时间,%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2011-10-18 22:10:28,921
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%L:代码中的行数
%n:换行