Log4j工具入门

2023-10-31

Log日志:主要用于记录程序运行的情况,以便于程序在部署之后的排错调试等等!也有利于将这些信息进行持久化(如果不将日志信息保存到文件或数据库,则信息便会丢失)

Java Logging API

需JDK1.4版本以上才能支持。

java.util.logging.* 包是JDK的日志记录API。

基本概念

1. logger – 用来记录日志的对象

2.log level – 日志等级:从FINEST到SEVERE级别
请参考JDK文档

3.handler – 日志输出处理器,即用来将格式化后的日志信息输出,J2SE提供了下面的处理器

StreamHandler – 将信息输出到一个OutputStream对象

ConsoleHandler – 将信息输出到控制台

FileHandler – 将信息输出到文件

还有Socket处理器和内存处理器等

4.Formater – 用来对日志信息进行格式化

SimpleFormater – 简单的格式化输出

XmlFormater – Xml格式化输出

5.logManager – 日志管理器,它包含有那些被命名的logger,以及从配置文件中读取来的一些控制信息


Log4j

基本概念

Log4j比JDK Logging更加成熟。Log4j是事实上 日志记录标准。

三大概念:logger/appender/layout

logger – 使用这个对象来进行输出

appender – 使用这个对象来定义输出到哪里去

layout – 使用这个对象来定义输出的格式

例如定义两种类型的输出:一种是控制台,一种是文件:

//log4j.properties部分文件:

### direct log messages to console ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n


### direct messages to file oa.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:/oa.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j的级别(level)

DEBUG < INFO < WARN < ERROR <FATAL

级别由小到大,当级别为DEBUG时,log4j会输出DEBUG , INFO ,WARN ,ERROR ,FATAL 五种信息

  当级别为INFO时,log4j会输出 INFO ,WARN ,ERROR ,FATAL 四种信息,依次类推;log4j总是输出比它级别大的信息

基本配置与使用

只需要将log4j.jar包放到类路径中,并且保证在类路径根目录下有一个log4j.properties文件即可。Log4j.properties文件是对log4j的配置。 

在log4j.properties中,可以配置logger/appender/layout/level等内容。 

1. 了解如何配置logger

log4j.rootLogger = [级别],[使用哪个appender]

log4j.logger.[logger的名称]=[级别],[使用哪个appender]

2.了解如何配置appender

Log4j.appender.[appender的名称]=[appender类名]

Log4j.appender.[appender的名称].[appender的属性名]=[appender的属性值]

如:对于ConsoleAppender来说,可以配置它的target属性为System.out,而对于FileAppender来说,可以配置它的File属性为一个文件名

3.了解如何配置layout

Log4j.appender.[appender的名称].layout=[layout类名]

Log4j.appender.[appender的名称].layout.[layout的属性名]=[layout的属性值]

4. 最常见的是PatternLayout

 Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数见表1如下:

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

 

Commons log

通用Log处理,它是一个接口抽象,底层的实现可以自动替换: 

如果当前存在log4j,则使用log4j来实现

否则,使用JDK LOG来实现

否则,使用其自身的简单实现


最常用的方式就是这样:

private Log logger = LogFactory.getLog(UserServiceTest.class);

//需要输出时
logger.debug("hello world");

最后贴一个log4j.properties文件格式,方便一个自己直接Copy改,这个里面包括了hibernate日志输入,spring日志输出,以及配置自己的日志输出,结合上面的内容还能往文件输出:

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace


#log4j.category.org.springframework.beans.factory=debug

#log4j.logger.com.oa=debug


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Log4j工具入门 的相关文章

  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • iPhone 崩溃日志?

    我已经配置了一部 iPhone 并让用户安装了该应用程序 它失败 是否有崩溃日志可以让我看到 iPhone 上失败的原因 Ian 如果您可以使用 xcode 将 iPhone 连接到计算机 则在管理器窗口中它会显示每个应用程序崩溃的崩溃日志
  • 在远程 Glassfish 上进行日志记录和/或调试

    我有个问题 我在远程 Glassfish 实例上部署了一个 Web 服务 现在我需要一些简单的日志或调试系统来纠正我的代码 使用简单的打印会更好 我的想法是使用 glassfish 日志文件 因为我可以从管理 GUI 访问它 但它不起作用
  • FluentD 日志不可读。已排除,下次检查

    面临 fluidd 日志无法读取 已排除 下次检查 我有一个在 kubernetes 设置中运行的 fluidD 守护进程集的简单配置 流利版本 fluidd 0 12 43 以下是我的配置
  • 以编程方式将 TextView 添加到主屏幕小部件

    我想以编程方式将文本视图控件添加到我的主屏幕小部件 在下面的示例中 我使用 TextView 填充 Linearlayout 但是这里应该如何使用 RemoteView 它只接受 xml 资源布局作为参数 public class MyWi
  • Logback 上下文选择器的实际使用

    Logback 的文档测井分离 http logback qos ch manual loggingSeparation html表明我可以使用上下文选择器 http logback qos ch manual contextSelecto
  • jQuery.ajax() 记录 HTTP 请求

    我有一个发送 HTTP POST 请求的函数 我想记录它以进行调试 这是函数 function serverRequest URL DATA callback ajax url URL type POST dataType text con
  • 在 iOS 上,边距、边缘插入、内容插入、对齐矩形、布局边距、锚点...之间有什么区别?

    iOS 社区中似乎有几种不同的选项 术语 人们在布局方面使用 例如 UIEdgeInsets 是一种类型 但有时我听到 读到 设置插图 或布局边距与布局指南 我总是能够找到有效的选择 但我永远不确定我是否使用了正确的工具来完成这项工作 有人
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • ASP.NET Core 日志记录在 2 个不同的文件中

    当使用默认的 ASP NET core 日志记录与 Serilog 结合使用时 是否可以将错误写入errors log并将信息写入informations log using Microsoft Extensions Logging usi
  • 哪里可以找到蝗虫原木?

    我正在使用 Locust 对我们的应用程序进行压力测试 我收到错误 因为 POST 调用似乎不正确 在哪里可以看到蝗虫的日志 我想看看邮寄电话是什么样子 看看出了什么问题 这是我的代码 以防有人可以告诉我我做错了什么 from locust
  • 如何让 STDOUT 和 STDERR 都转到终端和日志文件?

    我有一个脚本 将由非技术用户交互式运行 该脚本将状态更新写入 STDOUT 以便用户可以确定脚本运行正常 我希望将Stdout和STDERR重定向到终端 以便用户可以看到脚本正在工作 并查看是否存在问题 我还希望将两个流都重定向到日志文件
  • log4cxx:使用参数配置附加程序

    log4cxx 的配置是通过以下方式从后续 xml 中读取的 DOMConfigurator configure log4cxx xml 但是 想要在运行时设置文件名 这会产生一个问题 要么有多个 xml 供读取 要么动态创建一个 在内存中
  • Python Cherrypy 访问日志轮转

    如果我希望 Cherrypy 的访问日志仅达到固定大小 我将如何使用轮换日志文件 我已经尝试过了http www cherrypy org wiki Logging http www cherrypy org wiki Logging 这似
  • 将 n 个可变高度图像拟合为 3 个(相似长度)列布局

    我正在寻找类似于的 3 列布局piccsy com http piccsy com 给定许多宽度相同但高度不同的图像 有什么算法可以对它们进行排序以使列长度的差异最小 最好使用 Python 或 JavaScript 非常感谢您提前的帮助
  • 此 TableLayout 布局或其 LinearLayout 父级无用如何解决此警告

    我在 Linearlayout 中有 tablelayout 但它向我显示了此警告消息这个TableLayout布局或其LinearLayout父级是没有用的 如何克服这个警告可以帮助我 提前致谢
  • pytest 看不到正在测试的函数的日志

    我有一个像这样的烧瓶应用程序 from flask import Flask import logging app Flask name app route def catch all logging warning I m a warni
  • 如何在 Node.js 中使用 Winston 将日志存储到 mysql 数据库

    我正在使用 winston 为我的应用程序进行日志记录 我已经使用这个完成了文件传输 class LoggerHelper extends BaseHelper constructor cApp super cApp this props
  • cf.net 异常和其他日志记录

    我想向在 WM6 Pro 上运行的 cf net 应用程序添加一些日志记录功能 我正在研究记录异常和一些更敏感的代码部分 我希望将日志存储在本地 即在设备上 并将它们可靠地上传到服务器 它们需要排队 我的应用程序偶尔会连接 有谁知道 log

随机推荐

  • 在Docker上部署FastApi(最新)

    目录 1 文件上传与新建目录 文件目录 2 修改requirements txt文件 3 修改Dockerfile txt文件 4 打包成镜像 5 运行启动 6 查看运行状态与日志 1 文件上传与新建目录 新建以下目录 其中 py文件是自己
  • 使用 github 的 Action 功能实现 Microsoft office E5 订阅自动续订

    在使用期限内 微软会根据 API 调用情况看账号是否是用于开发 如果符合的话 会在距离到期 30 天时自动续期 如果不符合就不给续订了 所以可以使用一些办法多多使用 这样就可以持续续订 可以使用 github 的 Action 实现 默认读
  • python数据可视化03

    一 正弦曲线与余弦曲线图 import numpy as np import matplotlib pyplot as plt plt rcParams font sans serif SimHei plt rcParams axes un
  • Mac和Linux中Apache RocketMQ的安装和使用(亲测有效,不服来战)

    一 项目需要用到Apache RocketMQ Apache RocketMQ is an open source distributed messaging and streaming data platform 这是阿里开源的一个消息中
  • 操作系统(王道)

    1 1 1 操作系统概念 裸机 硬件只听得懂二进制指令 gt 操作系统 属于软件 提供良好交互界面 gt 应用软件 gt 用户使用 操作系统是指控制和管理整个计算机系统的硬件和软件资源 并合理地组织和调度计算机工作和资源的分配 以提供给用户
  • mysql查看所有用户

    使用shell命令MySQL uroot p 输入密码后再select user host from mysql user 结果
  • vue2中使用axios http请求出现的问题解决

    使用axios处理post请求时 出现的问题解决 默认情况下 axios post url params then res gt res data 当url是远程接口链接时 会报404的错误 Uncaught in promise Erro
  • 【论文摘要】标签合并Bamboo: Building Mega-Scale Vision Dataset Continually with Human-Machine Synergy

    Bamboo Building Mega Scale Vision Dataset Continually with Human Machine Synergy 前言 论文链接 https arxiv org pdf 2203 07845
  • git上线流程

    1 本地分支上传远端 git push 2 切换到master主分支 git checkout master 3 拉取最新 git pull 4 新建分支 merge 日期 先切换 git checkout merge 20210528 切
  • 几种常见的排序算法、搜索与二分法查找

    目录 一 排序算法 1 1 冒泡排序 1 2 选择排序 1 3 插入排序 1 4 快速排序 1 5 常见排序算法效率比较 二 搜索 2 1 二分法查找 一 排序算法 1 1 冒泡排序 冒泡排序算法的运作原理 1 比较相邻的元素 如果第一个比
  • 交换机与路由器技术-35-端口多路复用PAT

    目录 一 端口多路复用 PAT 1 1 概述 1 2 端口映射 服务器映射 1 3 配置端口多路复用 1 3 1 方式一 使用单独的公网IP 第一步 定义内网和外网接口 第二步 定义内网地址范围 外网地址 1 使用ACL 允许某个范围的内网
  • 学习C++项目—— 搭建多进程网络服务框架,增加业务和日志,心跳机制

    学习计算机网络编程 一 思路和学习方法 本文学习于 C语言技术网 www freecplus net 在 b 站学习于 C 语言技术网 并加以自己的一些理解和复现 如有侵权会删除 接下来对网络编程继续深入学习 二 网络编程继续深入 2 1
  • beego实现跨域

    使用路由过滤器实现跨域访问 routers router go 的init方法中添加过滤器 beego InsertFilter beego BeforeRouter cors Allow cors Options 允许访问所有源 Allo
  • jquery mobile学习教程之初识Jquery mobile 一

    Jquery Mobile简介 jQuery Mobile 是一个针对触摸体验的 web UI 开发框架 允许您开发跨智能电话和平板电脑工作的移动 web 应用程序 jQuery Mobile 框架构建于 jQuery 内核之上 提供几个功
  • 简单AIDL使用

    1 AIDL准备注意 build gradle buildFeatures aidl true 权限 在调用的APP添加目标APP可见 客户端 否则会有no Font service
  • Hystrix请求熔断与服务降级

    1 1 概述 在微服务架构中 根据业务来拆分成一个个的服务 服务与服务之间可以相互调用 RPC 在Spring Cloud可以用RestTemplate Ribbon和Feign来调用 为了保证其高可用 单个服务通常会集群部署 由于网络原因
  • Flex程序发布

    当你写好了一个Flex程序 想要按照某种方式发布 比如我们在网上见到很多发布后的例子中 在点击右键的时候出现一个菜单 菜单中有一个view source选项 选择这一项就可以预览程序的源码甚至是整个程序的架构 接下来简单介绍下程序的发布来实
  • 写定时任务发送邮件报错(Could not connect to SMTP host:smtp.exmail.qq.com,port:465)

    需求阐述 在写完定时任务发送邮件之后 调试的时候发现报错 Could not connect to SMTP host smtp exmail qq com port 465 一开始我以为是在for循环里发送邮件导致的 把循环禁用掉之后 发
  • systemd配置文件及管理方法详解

    一 systemd文件夹配置文件夹 systemd 配置文件存在于以下三个文件夹中 etc systemd system 存放系统启动的默认级别及启动的unit的软连接 优先级最高 run systemd system 系统执行过程中产生的
  • Log4j工具入门

    Log日志 主要用于记录程序运行的情况 以便于程序在部署之后的排错调试等等 也有利于将这些信息进行持久化 如果不将日志信息保存到文件或数据库 则信息便会丢失 Java Logging API 需JDK1 4版本以上才能支持 java uti