- 浏览: 662955 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (609)
- java (139)
- 数据库 (107)
- 微信 (23)
- IT生活 (5)
- web前端 (74)
- SSH (11)
- 设计模式 (12)
- 重要资料 (11)
- 其他 (15)
- java技巧 (23)
- 服务器 (9)
- 2D/GUI (3)
- JAVA3D (2)
- ANT (5)
- Apache项目 (19)
- 数据类型 (10)
- 报表 (3)
- Collections (6)
- SQL/JDBC (15)
- 开发类 (6)
- EJB (6)
- Email (6)
- 文件读写 (2)
- 游戏 (0)
- Flex (2)
- Generic (2)
- HIbernate (12)
- I18N (5)
- Java EE (9)
- java ME (4)
- JDK 6 (8)
- JNDI/LDAP (5)
- JSP (7)
- JSTL (2)
- 正则表达式 (2)
- 安全 (2)
- Struts2 (12)
- Spring (4)
- Web服务 (10)
- Xml (1)
- JavaScript (30)
- AJAX (7)
- 验证 (4)
- 上传下载 (1)
- office办公软件 (1)
- Android (2)
- IOS (0)
- Dubbo (3)
- memcached/redis (1)
- 小程序 (1)
- 微信公众号 (0)
最新评论
-
wf_wangfeng:
怎么我用第一种方法不行呢 alert(document.rea ...
当jsp页面完全加载完成后执行一个js函数 -
Lori_Liu:
有帮助,至少可以解决了目前所遇到的问题!谢谢..
当jsp页面完全加载完成后执行一个js函数 -
starbhhc:
String actionMessage = new Stri ...
Java读取txt文件乱码 -
starbhhc:
Sev7en_jun 写道GOOD
客气,互相交流。。
javaeye论坛规则小测验(答案)--star -
Sev7en_jun:
GOOD
javaeye论坛规则小测验(答案)--star
软件中总免不了要使用诸如 Log4net, Log4j, Tracer 等东东来写日志,不管用什么,这些东东大多是大同小异的,一般都提供了这样5个日志级别:
Debug
Info
Warn
Error
Fatal
一个等级比一个高,但是在具体开发中,关于应该如何选择适应的等级,却没有找到好的文章进行说明。记录一下自己的一些看法,以便日后使用吧。
=== Debug ===
这个级别最低的东东,一般的来说,在系统实际运行过程中,一般都是不输出的。
因此这个级别的信息,可以随意的使用,任何觉得有利于在调试时更详细的了解系统运行状态的东东,比如变量的值等等,都输出来看看也无妨。
当然,在每一个 Debug 调用之前,一定要加上 If 判断。
=== Info ===
这个应该用来反馈系统的当前状态给最终用户的,所以,在这里输出的信息,应该对最终用户具有实际意义,也就是最终用户要能够看得明白是什么意思才行。
从某种角度上说,Info 输出的信息可以看作是软件产品的一部分(就像那些交互界面上的文字一样),所以需要谨慎对待,不可随便。
=== Warn、Error、Fatal ===
警告、错误、严重错误,这三者应该都在系统运行时检测到了一个不正常的状态,他们之间的区别,要区分还真不是那么简单的事情。我大致是这样区分的:
所谓警告,应该是这个时候进行一些修复性的工作,应该还可以把系统恢复到正常状态中来,系统应该可以继续运行下去。
所谓错误,就是说可以进行一些修复性的工作,但无法确定系统会正常的工作下去,系统在以后的某个阶段,很可能会因为当前的这个问题,导致一个无法修复的错误(例如宕机),但也可能一直工作到停止也不出现严重问题。
所谓Fatal,那就是相当严重的了,可以肯定这种错误已经无法修复,并且如果系统继续运行下去的话,可以肯定必然会越来越乱。这时候采取的最好的措施不是试图将系统状态恢复到正常,而是尽可能地保留系统有效数据并停止运行。
也就是说,选择 Warn、Error、Fatal 中的具体哪一个,是根据当前的这个问题对以后可能产生的影响而定的,如果对以后基本没什么影响,则警告之,如果肯定是以后要出严重问题的了,则Fatal之,拿不准会怎么样,则 Error 之。
=== 一些疑惑 ===
不过在实际使用中,基于上面的这种考虑,也还是有一些具体问题。最常见的就是要在最终产品中将输出日志打开到那种级别才算好呢?
例如在应用中有一个输出窗口,一些系统状态信息将被输出到这个输出窗口中。因为 Info 的级别是如此之低,所以为了让用户能够看到有效的输出信息,必须将日志级别开放到 Info 级别。但是 Warn 的级别比 Info 要高,所以用户不得不被迫看到一些 Warn 的信息。而我们其实已经假定,Warn 信息其实并不影响系统的正常运行,这一般只代表系统中存在一些还没有被发现或者修改的小 Bug。这些 Warn 信息会让最终用户困惑甚至恐慌,系统发出警告了,该怎么办?
个人观点,Info 的级别应该比 Warn 更高才对,Warn 信息和 Debug 一样,应该在产品测试和调试时使用,而 Info、Erro 以及 Fatal 则在产品发布后需要继续使用。
目前我所采用的解决方法是,对于 Warn、Error、Fatal 都添加一个相应的系统断言,这样,可以保证当发生这种问题时,在调试阶段,可以立即得到提示。在软件发布以后,这些信息也能被记录到日志文件中去。
- Debug.Fail 将导致编译为 Debug 输出时,会弹出一个消息警告窗口,这可保证在测试、调试阶段不漏过任何一个潜在的错误。而在发布时,Release 编译的输出不会包括 Debug 语句,这就不会打扰最终用户,而错误信息仍然能通过 log 记录到日志中。
发表评论
-
Idea2024.1.1"破解"SquareTest1.8.13(1.8.15)
2025-02-17 15:08 01、idea先安装jclasslib插件,这个不用多说了,直 ... -
maven项目第一行报错:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.mave
2020-04-09 01:23 525maven项目第一行报错:org.apache.maven.a ... -
删除项目中的所有.svn文件夹(或CVS文件夹)
2019-06-06 19:19 555当你的项目用SVN管理时,在项目的每个文件夹中会多一个.svn ... -
eclipse下生成Java类图和时序图,生成UML图
2016-12-30 02:28 2071最近老板让我做类图和时序图,提苦恼的,完全不会,就从网上整理 ... -
eclipse使用ModelGoon插件自动生成java类的UML图
2016-12-30 02:23 12531、ModelGoon介绍 ModelGo ... -
linux下的tomcat jvm内存
2016-11-30 23:19 603常见的内存溢出有以下两种: Java.lang.OutOf ... -
FTP实现客户端与服务器文件传输(二)
2016-08-06 01:22 1028/*以sun开头的class不是java里面的标准类,而是 ... -
java实现文件转换成二进制存储与取出
2016-08-06 01:21 2777一、功能描述: 将文件转成二进制数据放入数据库中,需要的 ... -
Resource specification not allowed here for source level below 1.7
2016-08-05 11:14 1198现象:tomcat能正常启动,但打开页面时,出现上面的错误 ... -
使用commons.net FTP 和sun.net.ftp.FtpClient 多种方式上传下载(包括批量)删除功能(一)
2016-08-04 10:38 693使用commons.net FTP 上传下载删除功能 ... -
第十一节 CAS服务端RememberMe
2016-06-07 11:03 1202关于启用RememberMe功能所需做的修改描述 ... -
第七节:CAS4.0.0 以上服务端配置多个数据源
2016-06-03 14:50 11481.首先打开deployerConfigContext.x ... -
第六节:CAS服务端自定义数据库认证用户
2016-06-03 11:46 2387/** * @see --------------- ... -
第四节:将CAS https的认证方式改为http
2016-06-01 08:49 1705一、CAS Server端的修改 1、找到cas\W ... -
java 读取html过滤标签
2016-05-27 16:19 1006public static void main(Strin ... -
获取cookie
2016-05-26 16:07 835获取cookie -
spring同时集成redis和mongodb时遇到多个资源文件加载的问题
2016-05-14 15:40 785两天平台中集成redis和mongodb遇到一个问题 单独 ... -
Windows上安装OpenSSL和生成证书
2016-05-10 15:52 24131,先下载OpenSSL http://www.slpr ... -
4.ubuntu14.04 安装mongodb笔记
2016-05-06 08:52 6801、使用系统自动获取安装。 1)获取更新 s ... -
3.nodejs nodejs的mysql模块
2016-04-12 22:20 600安装nodejs的mysql模块首先要选定一个数据库,我选择 ...
相关推荐
这个页面可能包含一个表单让用户选择新的日志级别,然后通过Servlet或JSP内置对象(如`request.getParameter()`)获取用户的输入,再调用Log4j的API来更新日志级别。 总结来说,动态设置Log4j的日志级别是提高应用...
本篇我们将深入探讨如何调整log4j的日志级别,以便更好地管理和控制应用程序的日志输出。 首先,我们要理解日志级别在log4j中的含义。Log4j提供了多个预定义的日志级别,按照严重性从低到高排序,包括TRACE、DEBUG...
【logback日志级别动态切换】是Java应用中常见的需求,尤其在大型分布式系统中,为了应对不同的运行环境和性能优化,需要灵活调整日志输出级别。本文将介绍一种使用Java ASM库实现的终极解决方案。 首先,理解...
log4j2配置多个日志级别,拿到即可用, 。
一个简单的例子slf4j实现热加载日志级别
### Log4j日志级别详细介绍 #### Log4j概述 Log4j是Apache基金会下的一个开源项目,它是一个基于Java的日志组件,在众多Java日志框架中占据着重要的位置。Log4j因其丰富的特性和易用性而在企业级应用开发中被广泛...
Log4j 日志级别详解 Log4j 是 Java 中一种流行的日志记录工具,用于记录应用程序的运行过程和错误信息。Log4j 的核心组件是日志记录器(Logger),它可以根据不同的级别记录日志信息。在 Log4j 中,日志记录器的...
`Printk`日志级别是一个关键特性,允许系统根据不同的严重程度和信息类型来过滤和记录消息,帮助开发者和系统管理员更好地理解和诊断问题。下面将详细介绍各个日志级别的含义和应用场景。 1. **KERN_EMERG (紧急...
Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的功能,包括控制日志级别、定制日志格式、支持多种输出方式等。本示例将详细介绍如何使用Log4j来控制指定类或包的日志级别。 首先,我们来理解日志级别的...
日志级别是管理日志信息的关键因素,它决定了哪些日志会被记录并显示出来。本文将深入探讨日志级别及其在不同场景下的应用。 日志级别通常分为五个主要级别,它们按照严重性程度从低到高依次为: 1. **DEBUG(调试...
本文将详细讲解如何在运行时改变Log4j的日志级别,这对于调试和性能优化至关重要。我们将从以下几个方面进行探讨: 1. **日志级别介绍** 日志级别是Log4j中控制日志输出的关键,它定义了不同严重程度的消息应该被...
2. **日志级别支持**:日志库通常提供多个级别的日志输出,如DEBUG、INFO、WARNING、ERROR和FATAL。这允许开发者根据需要控制日志的详细程度,例如,在生产环境中可能只需要ERROR和FATAL级别的日志,而在调试时则...
本文将详细介绍如何利用Spring Boot Admin 来动态修改日志级别,以便在生产环境中更好地管理和调试应用。 首先,我们需要理解在生产环境中日志输出的常见困境。通常,日志级别分为多种,如DEBUG、INFO、WARN、ERROR...
动态修改日志级别
- 常见的格式化模板有`%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c %x - %m%n`,其中 `%d` 是日期,`%t` 是线程,`%-5p` 是日志级别,`%c` 是类名,`%x` 是异常跟踪,`%m` 是消息,`%n` 是换行符。 6. **日志切割**: ...
”日志级别、函数名、日志内容“ 三个字段,字段之间以空格拆分。请看数据源的文件。 (2)对读入都日志信息流进行指定筛选出日志级别为error或warn的,并输出到外部MySQL中。 需要用到的函数 (1)输入采用...
Spring Boot提供了方便的方式来管理日志级别,特别是在生产环境中,动态调整日志级别显得尤为重要,因为它可以避免重新部署应用程序就能查看更详细的日志信息。 在Spring Boot 1.5.1版本之后,通过`spring-boot-...
动态配置Spring Boot日志级别的全步骤 Spring Boot 提供了多种方式来配置日志级别,而动态配置日志级别是其中最常用的方式之一。在本文中,我们将介绍如何使用 Spring Boot 的 Actuator 模块来动态配置日志级别。 ...
在这个例子中,`changeLogLevel` 方法接收一个日志级别参数,然后修改 "org.mybatis" 和 "org.springframework" 包的日志级别。这样,通过调用这个接口,你可以临时提高日志级别,获取更多调试信息。 **2. 修改 ...
`console.log()`是最基础的日志输出方法,但有时我们需要更精细的控制,比如设置不同的日志级别,添加自定义前缀等。`console-log-level`模块就是为了满足这些需求而设计的。 `console-log-level`是一个轻量级的库...