对于程序猿来讲,一个应用程序的日志管理是极为重要的。因为,它可以帮助我们随时查看应用程序的运行状态、执行效果等信息,从而监控软件系统、或是根据日志信息解决一些重要的问题。
但是在 Java 应用程序中又有着众多的日志框架或是工具组件,比如 Java 的 Jdk 自身提供的 logging、Apache 提供的 log4j、还有 logback 等日志框架。今天所提到的 slf4j,它并不是一个具体的日志解决方案,它的存在只是为了服务于各式各样的日志系统,用户可以根据自己的需求选择日志系统比如 log4j。slf4j 相当于是对不同的日志系统提供的接口,它独立于我们所经常使用的日志系统比如 logback、log4j 等等。大家试想,如果在开发过程中出现了好几个日志类库,那么我们必须要对这些单独的日志系统进行配置、并且各个日志系统维护起来也是相当的麻烦。
经过 slf4j 的接口封装以后的日志系统调用也变得更加的简洁、并且使打印日志的方法也变得更加的高效。特别是提供的模板方法进行日志打印,减少了不停的创建字符串的消耗,在生产环境中日志对系统性能的影响往往是非常重要的,必须引起重视。现在,一般的微服务架构中都会采用 ELK 的架构模式,简单来讲就是将每个微服务模块的日志、接口调用信息都发送到另外一台服务器上使用 Web 日志系统进行查看,如果有需要了解 ELK 日志系统的可以留言后期文章进行说明。
1logger.debug("result is name: {} and age : {} ", name, age);
接下来,说明一下如何结合 log4j、slf4j 的日志组件进行应用在我们的框架应用程序中,先理论、后实践,话不多说,我们先来看一下 Maven 的 pom 配置文件中配置这两个日志组件的依赖。
1<dependency>
2 <groupId>org.slf4j</groupId>
3 <artifactId>slf4j-api</artifactId>
4 <version>1.7.21</version>
5</dependency>
6<dependency>
7 <groupId>org.slf4j</groupId>
8 <artifactId>slf4j-log4j12</artifactId>
9 <version>1.7.21</version>
10</dependency>
其中 slf4j-api 是对外提供独立的日志接口,而 slf4j-log4j12 则是 slf4j 对于 log4j12 的支持,需要注意的是这两个组件的版本要保持一致以免产生不必要的麻烦。完成了依赖组件的引入,说一下日志系统的配置。在 项目中的 resource 文件夹下面新建 log4j.properties 文件进行接下来的配置。
1### 设置rootLogger,一般在开发环境中使用 debug 级别日志
2log4j.rootLogger = info,stdout,D,E
3## 控制台输出
4log4j.appender.stdout = org.apache.log4j.ConsoleAppender
5### 默认是system.out
6log4j.appender.stdout.Target = System.out
7### 布局格式,可以灵活指定
8log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
9### 消息格式化
10log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
11## 以每天一个文件输出日志
12log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
13## 输出文件目录
14log4j.appender.D.File = /usr/log/info.log
15## 消息增加到指定的文件中,false表示覆盖指定文件内容
16log4j.appender.D.Append = true
17## 输出信息最低级别
18log4j.appender.D.Threshold = INFO
19log4j.appender.D.layout = org.apache.log4j.PatternLayout
20log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
如果是 SpringBoot 还可以使用 yml 的形式来进行配置,结构、条理都会更加的清晰。最后,简单来说明一下使用 slf4j 的形式在应用程序中进行日志打印操作。
1// 使用 slf4j 的 Logger 对象获取类名为 Main 的日志对象,一般 Main 指的是当前类的名称
2private static Logger logger = Logger.getLogger(Main.class);
3public static void main(String[] args) {
4 String str = "测试字符串";
5 logger.info("str:{}", str);
6 }
这里展示了 logger.info() 方法的使用,还有 debug()、error() 方法等,并且每个方法都可以使用不同数量的参数可以满足比较多的需求。
更多精彩前往微信公众号【老王说编程】,每天分享编程干货!
相关推荐
SLF4J和Log4j的组合提供了丰富的日志级别(如DEBUG、INFO、WARN、ERROR),可以根据需求调整日志输出的详细程度,帮助开发者在调试阶段查找问题,或者在生产环境中监控系统状态。此外,还可以通过配置文件(如log4j....
在Spring Boot项目中,可以使用SLF4J作为日志门面,通过Log4j2实现日志记录。首先需要在项目中排除Spring Boot默认的日志实现(即spring-boot-starter-logging),然后添加Log4j2的依赖。具体操作如下: 1. 在pom....
SSM框架是Java Web开发中常用的三大框架Spring、Spring MVC和MyBatis的组合,而slf4j(Simple Logging Facade for Java)则是一种日志抽象层,它允许我们选择不同的日志实现,如Logback或Log4j。Gradle作为现代的...
标题中的"FLEX4+Gilead+BlazeDS+pureMVC+spring2.5 MVC+hibernate3.3+SLF4J+CXF2.3.0"涉及了多个关键技术和框架,这些都是在构建分布式、企业级Web应用程序时常用的技术组件。下面将逐一解析这些技术的核心概念和...
在升级过程中,尤其要注意与依赖库的兼容性,例如Log4j的升级。 Log4j是Apache的一个开源项目,提供日志记录服务,而Log4j2是其后续版本,提供了更好的性能、更丰富的功能和更高的可配置性。从Log4j升级到Log4j2,...
样品-slf4j-fluentd 这是一个使用 FluentLogger 作为 slf4j 记录器实现的示例 Web 应用程序。 它是在 Java EE REST API 应用程序上使用 fluentd 发送日志数据的演示。 您可以在不更改应用程序代码的情况下将日志目的...
在Java开发领域,Spring Boot是一个...通过引入Log4j依赖,配置日志输出格式和级别,以及在代码中使用`Logger`接口,我们可以实现高效且易于管理和分析的日志系统。这在开发、调试和维护Spring Boot应用时非常有用。
【Tomcat插件】在Eclipse中的应用及安装教程 Tomcat插件是Eclipse集成开发环境中的一个重要组件,主要用于方便开发者在Eclipse中管理和调试Apache Tomcat服务器。Apache Tomcat是一款开源的Java Servlet容器,它...
在项目中,需要选择一个具体的日志实现(如Logback)并与SLF4J结合使用,通过配置控制日志级别、格式等。 7. **异常处理**: 在使用Ehcache时,要注意处理可能的异常,如`CacheException`、`CacheNotFoundException`...
项目中可能使用了如Log4j、Logback或Java内置的日志框架java.util.logging,配合SLF4J(Simple Logging Facade for Java)提供统一的API,方便进行日志输出的管理和调整。 在这个名为"BasicProject"的压缩包中,...
综上所述,这两个开源项目分别提供了在Google App Engine上实现JSR107缓存的功能,以及在JBoss 4应用服务器中集成SLF4J日志框架的插件。这两个工具对于Java开发者来说都十分有价值,能够帮助他们优化应用程序的性能...
- **日志管理**:如Log4j、SLF4J等日志记录插件。 - **安全框架**:Spring Security、Apache Shiro等,提供认证和授权功能。 - **并发处理**:如线程池插件、并发工具类库(Guava)等,帮助优化多线程编程。 - **...
日志JAR文件通常包含了像Log4j、SLF4J或Commons Logging这样的日志库,它们允许开发者记录应用程序的运行时信息,帮助识别和修复错误。 描述中的"里面包含各种开发所需的包其中包含日志jar等其它所需的jar"进一步...
4. **slf4j-log4j12-1.7.5.jar**:SLF4J的适配器,使得SLF4J能够与log4j日志库协同工作。这意味着Shiro可以通过SLF4J接口调用log4j进行日志记录。 在实际使用中,开发者需要根据项目需求配置Shiro的相关配置,包括...
5. **SLF4J(Simple Logging Facade for Java)**:SLF4J是一个日志门面,它允许开发者选择底层的日志实现,如Log4j、Logback等。使用SLF4J可以方便地更换日志系统,而无需修改代码。 6. **Log4j**:Log4j是Apache...
Logback 是一个在 Java 应用程序中广泛使用的日志框架,由 Ceki Gülcü(也是 log4j 的创始人)开发。它旨在提高性能,提供更灵活的日志配置,并且是为满足现代应用程序的需求而设计的。Logback 包含了三个主要组件...
7. **日志集成**:虽然这个压缩包没有包含日志组件,但SSH框架的正常运行通常需要日志记录,例如Log4j或SLF4J。日志可以帮助开发者跟踪程序运行状态,排查问题。在项目中添加日志配置,可以提高问题定位的效率。 8....
在Java应用中,常见的日志工具有Log4j、Logback和SLF4J等,它们用于记录应用运行时的各种信息,便于后期分析和调试。 2. **Struts2**:Struts2是一款开源的MVC框架,用于构建基于Java的Web应用程序。它通过拦截器...
日志系统,如Log4j或SLF4J,也会被集成进来,以便于调试和监控系统的运行状态。 此外,版本控制工具如Git可能用于版本管理和团队协作,确保代码的一致性和可追踪性。测试框架如JUnit可能用于单元测试,保证代码质量...