明了的日志记录对于一个完美的系统来说是必不可少的。尤其项目在生产环境中遇到问题,开发人员可以通过日志记录逐一排查哪里出了故障。
Logger框架有很多种:Apache下的logger,util包下的logger,commons包下的logger,还有slf4j的logger,大家一定会问我,选择哪种框架呢? 说句题外话,要是我,我绝对不会考虑commons旗下的和util旗下的,为什么呢 ,日志功能如果这么低端的常用的包就有日志功能,肯定有考虑不周到的地方,再说也不够大气上档次,我的强烈推荐是slf4j。
知道我为什么会选择slf4j么?有如下几个原因:
1:效率上,功能上都是其他框架下的日志所比拟的。
2:slf4j是专一做日志功能的框架,知名度比其他框架好
实现日志的功能,我们离不开日志的配置文件,我一般不会选择xml格式配置文件,而会选择property格式的配置文件,我会把它当做属性的键值对来看待,更直观。
log4j.properties大体配置文件如下:
### 设置日志级别,低于WARN级别的日志不会输出到日志文件###
log4j.rootLogger=WARN,A1,A2
### 开发工具的控制台console打印出日志 ###
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Target=System.out
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p(%10c{1}) %m%n
### 每天创建一个日志文件,而且会以年月日的开头命名 ###
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=logs/mall.log
log4j.appender.A2.DatePattern='.'yyyy-MM-dd
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
### 错误级别下的日志文件 ###
log4j.appender.Error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Error.DatePattern='.'yyyy-MM-dd
log4j.appender.Error.File=logs/mall_error.log
log4j.appender.Error.layout=org.apache.log4j.PatternLayout
log4j.appender.Error.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %-5p(%10c{1}) %m%n
### 为项目中某种包开头的类中有输出语句的地方输出到日志文件下A1,级别是debug ###
log4j.logger.com.linkage=DEBUG,A1
log4j.logger.com.ai=DEBUG,A1
格式化符号说明:
%p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:输出自应用程序启动到输出该log信息耗费的毫秒数。
%t:输出产生该日志事件的线程名。
%l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。
%c:输出日志信息所属的类目,通常就是所在类的全名。
%M:输出产生日志信息的方法名。
%F:输出日志消息产生时所在的文件名称。
%L::输出代码中的行号。
%m::输出代码中指定的具体日志信息。
%n:输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"。
%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%:输出一个"%"字符。
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
1) c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
2)%-20c:"-"号表示左对齐。
3)%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
在代码的哪些地方写入正确格式的log信息呢?
1,在可能出现异常的地方写入erro级别的日志,因为这为后面的排错至关重要
2,在一些逻辑处理的地方写入info级别的日志,比如查看用户登录信息等
3,在开发的条件下写入debug信息,方便开发人员测试
分享到:
相关推荐
"Logger日志文件查看"这一主题主要涉及如何有效查看和分析.log文件,以及可能用到的工具和技术。 1. **日志文件的格式与内容** 日志文件通常包含时间戳、事件级别(如调试、信息、警告、错误和致命错误)、源...
在C#编程环境中,C# Logger 是一个受到Apache log4j项目启发的日志工具,旨在提供高效、灵活的日志管理功能。 C# Logger 设计的核心理念是层次化和可配置性,这使得它能够适应各种开发需求。通过这个工具,开发者...
在Fastify中,日志管理是系统监控、调试和错误追踪的关键部分,而`fastify-logger`正是Fastify官方推荐的日志插件。这个插件允许开发者以结构化的方式记录和处理应用程序的日志,提升开发效率并确保问题排查时有充足...
**JSLogger日志记录组件** JSLogger是一款轻量级的日志记录工具,它主要用于JavaScript环境中的日志收集和分析。在Web开发中,日志记录是调试和优化代码的重要手段,能够帮助开发者追踪代码执行过程,定位错误和...
在LabVIEW中,"logger"通常指的是日志记录功能,用于捕获和存储程序运行时的各种信息,如变量值、错误信息、事件触发等,这对于调试、优化和分析程序行为至关重要。 日志记录在LabVIEW中的实现可以通过自定义VI...
优雅的控制台日志 Logger 是一个开源项目,其主要目标是提供一种高度可配置的方式来记录应用程序的运行状态,使得开发者可以更加清晰、有效地追踪代码执行过程中的信息、警告和错误。在开发过程中,日志系统扮演着至...
日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等。 本日志模块的主旨是提供一个基于Qt框架,简单易用、可拓展性好、支持多种输出目标和格式的底层日志库,...
开源日志库Logger提供了一种更为高效、灵活且功能丰富的日志记录解决方案,相比于Android自带的`Log`类,它具有更多的定制化选项和更好的可读性。下面我们将详细探讨Logger库的使用及其优势。 Logger库通常通过...
Logger是轻量级日志类,提供写日志功能,支持多线程,支持可变形参数操作,支持写日志级别的设置。 博客地址: http://blog.csdn.net/sunflover454/article/details/49758801
这篇文档主要讨论了如何在Java Swing应用中使用`Logger`来生成和管理错误日志。 `Logger`是Java的日志记录工具,它提供了多种级别(如SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)来区分不同严重程度的...
`Logger`是一个常见的开源日志库,它提供了比Android自带的`Log`类更强大、更方便的功能。本教程将深入探讨如何使用`Logger`库来提升你的Android日志记录体验。 1. **日志库的选择** Android默认的日志系统`Log`...
"Logger日志工具使用"这个主题,指的是如何有效地利用特定的日志库来记录应用程序运行时的信息。在这个Eclipse版本的开源项目中,我们可以找到一个强大的日志工具,它可能是基于Java的log4j、logback或者是其他的...
日志框架Logger的使用
"Android-logger日志打印工具"是一个专门为Android平台设计的日志库,它提供了比Android原生`Log`类更加强大、灵活和可定制的日志输出功能。下面将详细介绍这个工具的主要特性、使用方法以及它如何提升Android应用的...
"logger记录日志"这个主题涉及了如何使用logger工具来捕获和管理应用程序运行过程中的信息。 日志通常分为多个级别,包括DEBUG、INFO、WARNING、ERROR和CRITICAL等。DEBUG级别用于记录最详细的信息,适合开发阶段...
AndroidLogger.V1.2.7 是专为Notepad++设计的一个插件,它针对Android开发人员优化了日志查看体验。 Android应用程序在开发过程中会产生大量的日志信息,通常这些日志是以纯文本格式存储,以.log为扩展名。默认情况...
1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的...Logger从来不直接实例化,经常通过logging模块级方法(Module-Level Function)logging.getLogger(name)来获得,其
支持自开发,扩展还可用于其他数据采集,在此不一一描述,有意向者自取,logger支持如下: 支持跨平台 windows/linux 支持配置热更新 支持socket断线重连重传 支持内存共享 支持日志文本分类存储 支持日志自动存储...
针对这一需求,`Go-Golang漂亮打印日志(Logger)`项目应运而生,它提供了一种方式,通过颜色和级别来提升日志的可读性,帮助开发者更方便地调试和分析问题。 首先,让我们深入了解日志记录的重要性。日志是程序运行...
《Go-go-logger:构建高效日志管理系统》 在软件开发中,日志记录是不可或缺的一部分,它能够帮助开发者追踪程序运行状态、定位错误、优化性能。Go语言,以其简洁的语法和高效的特性,已经成为现代后端开发的热门...