log4j(四)——如何控制不同风格的日志信息的输出?
一、测试环境
与log4j(一)——为什么要使用log4j?一样,这里不再重述
二、老规矩,先来个例子,然后再聊聊感受
package com.sc.log4j; import org.apache.log4j.Appender; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Layout; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; /** * Created by Miss黄 */ public class UseLog4j { //日志记录器 private static Logger LOGGER = LogManager.getLogger(UseLog4j.class); //程序入口——主函数 public static void main(String[]args){ /** * 设置日志信息输出的风格样式,日志输出的风格主要有以下几种,可以各自设置一下,看看对应的效果 */ /** * 1)org.apache.log4j.HTMLLayout ,以HTML表格形式布局,输出的信息为: * 1:从layout(布局)的构建到日志事件创建所经过的毫秒数 * 2:生成该日志事件的线程的名称 * 3:日志事件的优先级,即DEBUG,INFO,WARN,ERROR * 4:日志事件的category(类别),通常就是所在类的全名 * 5:代码中指定的消息 */ // Layout layout = new HTMLLayout(); /** * 2)org.apache.log4j.SimpleLayout,输出的信息为: * 1:日志事件的优先级,即DEBUG,INFO,WARN,ERROR * 2:代码中指定的消息 */ // Layout layout = new SimpleLayout(); /** * 3)org.apache.log4j.TTCCLayout,输出的信息为: * 1:从layout(布局)的构建到日志事件创建所经过的毫秒数 * 2:生成该日志事件的线程的名称 * 3:日志事件的优先级,即DEBUG,INFO,WARN,ERROR * 4:日志事件的category(类别),通常就是所在类的全名 * 5:代码中指定的消息 */ // Layout layout = new TTCCLayout(); /** * 4)org.apache.log4j.PatternLayout(可以灵活地指定布局模式),这是实际工作中我们最常用的一种,输出的信息是自定义的,比如:下面的设置 */ //设置日志信息的格式化方式 String pattern = "%l - %p - %m%n"; Layout layout = new PatternLayout(pattern); //设置日志信息的输出目的地 Appender appender= new ConsoleAppender(layout); //设置日志信息的输出配置 BasicConfigurator.configure(appender); //输出日志信息 LOGGER.info(" my level is INFO"); } }
三:感受
1)上面的代码将几种常用的日志输出风格都列出来了,感兴趣的话,可以将注释解注,试验一下效果
2)通过试验,我也将每种风格的日志信息都是输出什么也简单的列举了一下,总的感觉自定义的风格是最好玩的一个,我们可以随便的定义自己想要的输出内容
3)log4j定义的日志输出风格不止这几个,还有别的只是这几个比较简单,介绍起来也方便,也能比较一下各种风格的异同,其中自定义的方式是最为常用的,非常的灵活方便
文章转自:http://www.cnblogs.com/godtrue/p/6442562.html
分类:
log4j
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决