日志记录器:
个人总结:就是要记录一下代码运行,记录一下重要的过程。特别是异常。比如:一个项目有些错误很长时间发生一次,我们就可以去看日志文件。找到相应的问题。而不要去等下一次问题出现。
日志解析
日志(log)
主要用来记录系统运行中一些重要操作信息
便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到原因
日志分类
SQL日志、异常日志、业务日志
log4j是一个非常优秀的开源日志记录工具
控制日志的输出级别
控制日志信息输送的目的地是控制台、文件等
控制每一条日志的输出格式
log4j使用。
1.下载log4j的jar
2.把jar移到项目中,用build path(生成路径 ),使项目找到jar。
目录结构
3.在src下建立log4j.properties文件。内容一般固定。如下
级别,输出的文件方式
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=e:/pctc.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
日志级别:
它们定义了日志显示的级别,一共分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,明白这一点很重要,这里Log4j有一个规则:假设设置了级别为P,如果发生了一个级别Q比P高,则可以启动,否则屏蔽掉。
代码实现
import java.util.InputMismatchException;
import java.util.Scanner;
import org.apache.log4j.Logger;
import com.pctc.testlog.TestLog;
public class Testlog4j{
private static Logger logger=Logger.getLogger(TestLog.class.getName());
public static void main(String[] args) {
try {
System.out.println("输入一个字母");
Scanner input =new Scanner(System.in);
String num1=input.next();
logger.debug("file输入字母:" + num1);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
logger.info("欢迎使用本程序!");
}
try{
System.out.println("");
Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = in.nextInt();
logger.debug("file输入被除数:" + num1);
System.out.print("请输入除数:");
int num2 = in.nextInt();
logger.info("file输入除数:" + num2);
logger.debug("file输出运算结果:" + String.format("%d / %d = %d",num1, num2, num1 / num2));
} catch (InputMismatchException e) {
logger.error("被除数和除数必须是整数", e);
} catch (ArithmeticException e) {
logger.error(e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
} finally {
logger.info("欢迎使用本程序!");
}
}
}
控制台:
输入一个字母
k
DEBUG - file输入字母:k
INFO - 欢迎使用本程序!
请输入被除数:10
DEBUG - file输入被除数:10
请输入除数:0
INFO - file输入除数:0
ERROR - / by zero
INFO - 欢迎使用本程序!
日志文件增加信息
如果把日志级别从DEBUG改为INFO
则代码在执行后:
日志文件变化:
日志级别经验
一般我们是开发是日志级别是Debug,发布后是INFO