- 浏览: 1612959 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (603)
- T_java (145)
- T_script&ASP (51)
- T_C/C++ (25)
- T_PowerBuilder (11)
- T_Database (53)
- T_odoo (7)
- T_应用服务器 (50)
- T_专_条形码 (6)
- T_专_负载均衡器 (4)
- T_操作系统 (94)
- T_信息安全 (41)
- T_专_搜索引擎 (14)
- T_L_PHP (58)
- T_L_Delphi (18)
- T_L_.NET、C#、VisualStudio (25)
- T_L_Objective-C (6)
- T_移动开发 (53)
- T_网络 (109)
- T_大数据 (2)
- T_嵌入式 (2)
- T_小众技术 (24)
- T_未分类 (58)
- L_旅游印记 (1)
- L_生活随笔 (48)
- L_中国文化 (18)
- L_户外与生存 (0)
最新评论
-
csbean4004:
不知道哪传来得恶习,发帖子不好好发,故意弄错一些东西,很讨厌
让HTML5支持后置摄像头 -
withthewind:
终于找到一个可以用的了。。。
如何用VBA取得Word文档中的标题前面的序号 -
busbby:
兄弟,无法下载,说文件不完整
一个好用的Outlook ost格式文件转pst文件的工具 -
yijavakevin:
密码啊~解压密码多少?
一个二维条形码组件 -
vipbooks:
你给的那个链接根本无法下载,跳到官网看了下最新版12M,但点下 ...
十步以内完成精细web打印
在java开发中,日志输出是最有效的系统调试及排错手段之一。但是,在实际开发过程中,对于一些复杂类型的对象,想在日志输出其详细内容却不容易。今天在 http://code.google.com/p/objdumper4j/ 上发现一个组件,可能有助于改变这种状况。
该组件名叫 ObjDumper4J,官方介绍及使用方法如下:
=================================
Dumps or inspects any objects and converts to readable format string. This library consists of one file only.
-sample
--------------------------------------------
import static tetz42.util.ObjDumper4j.*;
:
Logger.debug( dumper("The result object:\n", theResult) );
Logger.debug( inspecter("foo") );
--------------------------------------------
Dump
There are two dump method, 'dump' and 'dumper'.
'dump' method converts parameters to readable format String.
'dumper' method creates an object to dump the parameters. When 'toString' method of the object is called, the parameters will convert to readable format String.
Both dump parameters as follows:
- Array, List, Set
--------------------------------------------
String[]@13b8f864[
"foo"
"bar"
"baz"
]
--------------------------------------------
- Map
--------------------------------------------
HashMap@54bb7759{
"key1": "value1"
"key2": "value2"
}
--------------------------------------------
- Bean
--------------------------------------------
Bean@7cf1bb78{
intField = 10
floatField = 10.0
strField = "10"
}
--------------------------------------------
- mix
--------------------------------------------
HashMap@54bb7759{
"key1": Bean@7cf1bb78{
intField = 10
floatField = 10.0
mapField = HashMap@7f2a3793{
"key1": 100
"key2": 10000
}
}
"key2": ArrayList@50d5db23[
"foo"
"bar"
"baz"
]
}
--------------------------------------------
You can use 'dumper' method as follows:
--------------------------------------------
Logger.debug( dumper("Contents of DTO = ", dto) );
--------------------------------------------
The result:
--------------------------------------------
[DEBUG] Contents of DTO = FooDTO@13b8f864{
id = 42
name = "Tetz"
sex = "male"
jobs = ArrayList@37bd2664[
"IT engineer"
"Farmer"
"Husband"
"Farther"
]
}
--------------------------------------------
The object created by 'dumper' method do nothing unless its 'toString' method is performed. Therefore, if you use wise logging product like log4j, you need not care about performance problem when you write the code like below:
--------------------------------------------
log.debug( dumper("Result:\n", theResult) );
--------------------------------------------
instead of:
--------------------------------------------
if( log.isDebugEnabled() ) {
log.debug( dumper("Result:\n", theResult) );
}
--------------------------------------------
Because log4j does not perform 'toString' method unless the log is output.
Inspect
There are two inspect method, 'inspect' and 'inspecter'.
Both convert parameters as follows:
-sample
--------------------------------------------
System.out.println( inspecter("foo") );
--------------------------------------------
The result:
--------------------------------------------
String@18cc6{
value = char[]@7a187814[
f
o
o
]
offset = 0
count = 3
hash = 101574
serialVersionUID = -6849794470754667710
serialPersistentFields = ObjectStreamField[]@314c194d[ ]
CASE_INSENSITIVE_ORDER = CaseInsensitiveComparator@23394894{
serialVersionUID = 8575799808933029326
}
}
--------------------------------------------
Algorithm
You can choose five algorithms against reference cycles.
- superRapid
--------------------------------------------
// Very fast. Error will occur if the parameter is a bean that has a reference to itself.
Logger.debug( dumper(dto).superRapid() );
--------------------------------------------
- rapid
--------------------------------------------
// Fast. Depends on the parameter's 'hashCode' or 'equals' method, it might not act properly.
Logger.debug( dumper(dto).rapid() );
--------------------------------------------
- normal
--------------------------------------------
// Normal. Depends on the parameter's 'hashCode' method, it might not act properly.
Logger.debug( dumper(dto).normal() );
--------------------------------------------
- safe
--------------------------------------------
// Safe.
Logger.debug( dumper(dto) );
--------------------------------------------
- superSafe
--------------------------------------------
// Very safe. Error won't occur even if the parameter is a List, Set or Map that has a reference to itself.
Logger.debug( dumper(list).superSafe() );
--------------------------------------------
==================================
从例子中可以看出,用法很简单,输出的内容也非常详细。准备在项目中试试。
发表评论
-
SpringBoot Fat Jar解压运行
2018-06-28 21:40 2263SpringBoot已经成为当前最流行的微服务 ... -
一句话实现五星评分显示
2018-06-05 08:31 999Python: rate = 1 #rate 取值 ... -
来算google的可视化编程工具——Blockly,不仅仅是玩具
2017-10-16 21:34 33162Blockly - 来自Google的可 ... -
安卓动态分析工具 Inspeckage
2017-08-07 08:46 0工具介绍 一个基于Xposed 开发的应用动态分析工具 g ... -
Android逆向之旅---静态方式破解微信获取聊天记录和通讯录信息
2017-08-07 08:37 0一、猜想数据存放路径 微信现在是老少皆宜,大街小巷都在使用 ... -
破解微信数据库 并查询数据上传服务器
2017-08-07 08:29 0由于工作需求破解了微信的数据库 并获取想要的信息上传服 ... -
安卓黑科技之HOOK详解
2017-08-07 08:21 0本文带大家进入到安卓另一个世界 互联网攻防大战 Xpos ... -
安卓逆向之基于Xposed-ZjDroid脱壳
2017-08-07 08:18 0前言 之前介绍了普通常见的反编译模式 但对于使用了 360 ... -
十步以内完成精细web打印
2017-06-21 11:44 7390注意: 康虎云报表组 ... -
pdf2htmlEX:把PDF转换成HTML的神器
2017-03-15 19:00 2777pdf2htmlEX:将 PDF 转为 HTML 网页 反 ... -
子div撑不开父div的几种解决方法
2017-02-26 11:39 2872子div撑不开父div的几种解决方法 子div撑不开 ... -
浏览器端精准打印或套打组件
2017-01-18 13:05 6705注意: 康虎云报表 ... -
两个相同放大镜叠加焦距计算
2016-09-16 19:47 2426关于两个相同放大镜叠加后焦距的计算公式: F={ ( f ... -
疯狂软件对Oracle放弃Java EE的看法
2016-08-14 22:38 530来源:http://javaligang ... -
几个Java相关的思维导图
2016-03-17 13:07 962来源:http://blog.csdn.net/jackf ... -
八款优秀的Linux天文学软件
2016-02-21 20:31 2914八款优秀的Linux天文学软件 天文学是一门研究恒 ... -
jasperReport Applet 打印
2016-02-01 16:33 874Applet方式的原理是本地下载Applet以及Jas ... -
为Java说句公道话
2016-01-24 10:59 720为Java说句公道话 有些 ... -
Mybatis Generator配置详解(中文)_转
2015-12-17 16:44 925来自: http://www.jianshu.com/p/e ... -
一个提供大量数据模型的网站
2015-12-17 14:00 996网站地址是:http://www.databaseansw ...
相关推荐
Log4j只需要引入一个JAR包,即log4j.jar,而Log4j2则需要引入两个核心JAR包,即log4j-core.jar和log4j-api.jar。大家可以发现,Log4j和Log4j2的包路径是不同的,Apache为了区分,包路径都更新了。 文件渲染 Log4j...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...
**log4j**:Log4j是Apache组织开发的一个开源日志框架,广泛应用于各种Java项目中。它提供了丰富的日志级别(如DEBUG, INFO, WARN, ERROR, FATAL)和灵活的日志配置,允许我们将日志输出到控制台、文件、数据库等...
本文将详细探讨如何通过SLF4J接口来使用Log4j进行日志记录,并展示一个测试代码实例。 **SLF4J简介** SLF4J是一个抽象层,为各种日志框架提供了统一的API,如Logback、Log4j等。它的主要优点在于可以让你在不修改...
**日志组件Log4j详解** 日志组件在软件开发中扮演着至关重要的角色,它帮助开发者记录程序运行过程中的信息、错误和调试细节。Log4j是Apache组织提供的一款开源的日志记录工具,广泛应用于Java平台。Log4j的设计...
### Log4j2简介 Log4j2是Apache软件基金会推出的日志框架,它是Log4j 1.x的重构版本,旨在提供更为高效且灵活的日志解决方案。...对于寻求高性能日志解决方案的应用开发者来说,Log4j2无疑是一个值得考虑的选择。
Log4j2主要包括以下几个组件: 1. **配置文件**:如`log4j2.xml`,这是Log4j2的配置中心,定义了日志记录的策略、级别、输出目标等。 2. **日志记录器(Logger)**:负责收集和处理日志事件。 3. **日志级别(Level...
配置Log4j通常通过一个XML或JSON格式的配置文件完成,例如`log4j2.xml`或`log4j2.json`,这个文件定义了日志的输出级别、目的地(如控制台、文件、数据库等)以及格式。 总的来说,Log4j 2是Java开发中不可或缺的...
针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...
近期,一个名为“log4j2”的严重安全漏洞引发了广泛关注,它影响了所有log4j2版本,从2.0开始直到2.18.0版本之前。这个漏洞,通常被称为“Log4Shell”,因其潜在的危害性被业界高度重视,可能允许攻击者远程执行任意...
Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...
Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供许多其它现代功能 ,例如对标记的支持、使用查找的属性替换、lambda 表达式与日志记录时无垃圾等。 Apache ...
Log4j2 是一个功能强大且广泛使用的日志记录工具,它提供了灵活的日志记录机制和高性能的日志记录能力。Slf4j 则是一个简单的日志记录门面,提供了统一的日志记录接口。今天,我们将讨论如何将 Log4j2 结合 Slf4j ...
1. **Log4j简介**:Log4j是一个广泛使用的Java日志库,提供强大的控制日志输出的能力,支持多种输出格式,如控制台、文件、数据库等。它允许开发者动态地调整日志级别,以便在开发、测试和生产环境中灵活控制日志的...
总的来说,log4j-api-2.17.1.jar和log4j-core-2.17.1.jar是Log4j2的核心组件,它们共同构建了一个强大且可扩展的日志框架。开发者应熟悉这两个库的职责和交互方式,以便充分利用Log4j2的功能,同时确保系统的安全性...
apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...
Log4j是Apache软件基金会的一个开源项目,它为Java应用程序提供了一种灵活的日志记录方案。Log4j的优点包括可配置性、性能高效以及支持多种输出格式,如控制台、文件、数据库等。在Tomcat中,Log4j可以用来代替默认...
标题提及的是"log4j-API-最新稳定版本log4j-1.2.17",这表明我们关注的是日志框架Log4j的一个特定版本,即1.2.17。Log4j是Apache软件基金会开发的一个用于Java应用程序的日志记录工具,它提供了灵活的日志记录功能,...
使用这两个库时,通常需要一个配置文件(如`log4j2.xml`或`log4j2.json`)来定义日志行为,包括日志输出级别(如DEBUG、INFO、WARN、ERROR)、输出目的地(控制台、文件、数据库等)、以及布局格式(如PatternLayout...
Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...