• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解记录Java Log的几种方式

java 搞代码 4年前 (2022-01-05) 16次浏览 已收录 0个评论

很多小伙伴不知道如何记录日志,今天特地整理了本篇文章,文中有非常详细的介绍及代码示例,对小伙伴们很有帮助,需要的朋友可以参考下

在Java中记录日志的方式有如下几种:

一、System.out.println(最简单)

1、输出到控制台:System.out.println(“XXX”);
2、输出到指定文件:

 import java.io.PrintStream; PrintStream ps = new PrintStream("D:\\test.txt"); System.setOut(ps); System.out.println("XXX");

二、java.util.logging(相对简单)

JDK自带的logging.jar中的方法。通过位于JDK安装

来源gao!%daima.com搞$代*!码网

路径下的jre/lib/logging.properties文件进行配置。

1、默认配置如下:

 handlers= java.util.logging.ConsoleHandler .level= INFO # default file output is in user's home directory. java.util.logging.FileHandler.pattern = %h/java%u.log java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # Limit the message that are printed on the console to INFO and above. java.util.logging.ConsoleHandler.level = INFO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

默认是输出到控制台,如果既想在控制台,又想在文件中,要修改如下配置:

 handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler

Logger的级别按降序排序如下:

  • SEVERE(最高值)
  • WARNING
  • INFO 
  • CONFIG 
  • FINE 
  • FINER 
  • FINEST(最低值)

默认所有log的输出级别是INFO(.level= INFO),比INFO更低的日志不会显示。
控制台的Log输出级别可以特殊控制,默认也是INFO,可以修改如下配置:

 java.util.logging.ConsoleHandler.level = INFO

2、实例

(1)输出到控制台:

 Logger log = Logger.getLogger("testLog"); log.setLevel(Level.WARNING); log.warning("xxxx testLog warning");

输出结果:

(2)输出到文件:

 FileHandler fileHandler;//文件控制器 try { fileHandler = new FileHandler("D:\\temp\\text.log"); fileHandler.setLevel(Level.INFO); fileHandler.setFormatter(new Formatter() {//定义一个匿名类 //Formatter 接受 LogRecord,并将它转换为一个字符串。 @Override public String format(LogRecord record) { Date date = new Date(); String sDate = date.toString(); return "[" + sDate + "]" + "[" + record.getLevel() + "]" + ":" +  record.getMessage() + "\n"; } }); Logger log = Logger.getLogger("testLog"); log.addHandler(fileHandler); log.info("aaa"); } catch (SecurityException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 

默认状况下, 日志会打印到控制台。添加 filehandler 后, 会同时写入文件。输出结果:

三、log4j(最强大)

可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等。具体配置不在此处详述。

1、Log4J的输出级别按降序排序如下:

  • OFF             最高等级,关闭日志
  • FATAL          可能导致应用中止的严重事件错误 
  • ERROR       严重错误,主要是程序错误 
  • WARN         一般警告 
  • INFO           一般显示信息 
  • DEBUG       调试信息 
  • TRACE        比DEBUG更细粒度的事件信息 
  • ALL              最低等级

2、实例

 import org.apache.log4j.Logger; public class Log4jTest { private static Logger log = Logger.getLogger(Log4jTest.class); public void log() { log.info("hello this is log4j info log"); } public static void main(String[] args) { Log4jTest test = new Log4jTest(); test.log(); } } 

除了上述几种,还存在logback等其他的日志框架,对于开发者而言,每种日志都有不同的写法。如果以实际的日志框架来进行编写,之后更换日志系统就很麻烦。

由此诞生了以下的门面类日志框架(它们都不是日志的最终实现,只是一套规范),将系统和具体的日志实现框架解耦合。

四、commons-logging(全称:Jakarta Commons Logging

commons-logging是为那些需要建立在不同环境下使用不同日志架构的组件或库的开发者创建的,由commons-logging在运行时决定使用哪种日志架构。

默认的LogFactory是按

以上就是详解记录Java Log的几种方式的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解记录Java Log的几种方式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址