- apache的log4j与jdk自带的logger的简单使用
- 一,jdk自带的logger
- ①:获取实例
- 调用Logger类的getLogger获取实例,参数通常传当前的完全类名作为该logger的名字。
- 将logger的实例设为全局 final static Logger logger = Logger.getLogger(LogTest.class.getName());
- ②:logger的属性配置
- jdk自带logger的实例可配置的属性有
- setFilter(Filter filter)
- setLevel(Level level)
- addHandler(Handler handler)
- setParent(Logger parent)
- --filter
- 其中设置filter和设置level的作用相同,设置filter要求实现Filter接口方法,我们可以在方法中
- 实现判断输出的日志记录的等级是否高于我们想要打印的日志等级即可
- 例如:
- logger.setFilter(new Filter() {
- public boolean isLoggable(LogRecord record) {
- Level l = record.getLevel();
- return l.intValue()>Level.INFO.intValue()?true:false;
- }
- });
- --level
- 设置level的作用也是过滤,当要打印日志的等级低于设置的level的值时,日志记录不会被打印。
- 例如:
- logger.setLevel(Level.warning);
- logger.info("print log ");
- 日志等级被设置为警告,但是日志打印时使用的是info,则该条日志不会被打印,通常的做法是
- 为不同的的环境比如开发环境和线上环境设置不同的level。
- --handler
- 设置handler比较重要,Handler是一个抽象类,jdk中的实现类有ConsoleHandler,FileHandler,SocketHandler
- 等,Console和File在项目中较常用到,其他未深看。ConsoleHandle表示打印到控制台,FileHandle表示打印到文件
- 在Handle实例中,我们可以设置编码和打印格式等,设置打印格式setFormatter(Formatter f),重写Formatter类的format方法,可以设置日志的打印格式,
- 例如:
- FileHandler .setFormatter(new Formatter() {
- @Override
- public String format(LogRecord record) {
- String time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
- int theadid=record.getThreadID();
- String loggerName = record.getLoggerName();
- long sequenceNumber = record.getSequenceNumber();
- String message = record.getMessage();
- StringBuffer sb = new StringBuffer();
- return time+"--"+theadid+"--"+loggerName+"--"+sequenceNumber+"--"+message+"\n";
- }
- });
- 使用该格式打印出来的日志如下:
- 2015-10-14 11:36:02--10--com.ucf.LogTest--0--
- 格式可以根据需要自行设置
- --parent
- setParrent(Logger logger)表示可以设置已有的logger实例作为自己的父配置,设置后可以继承
- 父配置的所有配置
- ---
- 通常会使用配置文件的方式,编写log4j.properties文件,保证其在classpath下就可以,而不用上面的硬编码的方式。
- 二,apache的log4j
java的日志打印
最新推荐文章于 2024-04-03 07:30:00 发布