`

如何在项目中用好log4写项目日志

阅读更多
一般的系统对程序的调试信息只进行了简单的粗放处理,将这些信息直接用System.out.println()语句输出到控制台中。由于在调度过程中程序员为了能够跟踪程序的运行情况往往将大量信息输出到控制台,而在调度成功后没有相应地将这些信息屏蔽掉,在程序部署运行后,往往一个简单的业务功能调用也会输出大容量的过程调度信息,一方面造成了大量IO的读写,占用硬盘空间,另一方面则因为日志量大,很难查找到运行期有用的日志信息。

程序异常,资源释放操作失败这些信息是发现程序问题,定位出错点的信息依据,得不到这些信息将导致程序错误被屏蔽,要想使问题浮出水面程序必须能够提供详细而简洁的日志信息。

log4J是为java语言量身定做的一个日志模块,用统一的接口写日志,通过配置文件信息控制日志信息的输出格式、目的及输出级别(指定输出级别后,只有比输出级别更高的日志会被输出)。可以在不更改程序输出日志的情况下方便日志输出的控制,为日志的操作提供了很大的灵活性。
2 log4J的基本操作
2.1写日志的API

log4J将日志分为5个级别,从低到高分别是DEBUG,INFO,WARN,ERROR,FATAL,相应地log4J为记录这5个级别提供了5个方法,它们分别是:

   public void debug(Object obj)

   public void info(Object obj)

   public void warn(Object obj)

   public void error(Object obj)

   public void fatal(Object obj)

同时每个方法还对应一个带Throwable入参的重载函数,用于将异常一并记录到日志中:

   public void debug(Object obj,Throwable ex)

   public void info(Object obj,Throwable ex)

   public void warn(Object obj,Throwable ex)

   public void error(Object obj,Throwable ex)

   public void fatal(Object obj,Throwable ex)

5个级别记录信息的重要性依次提升,下面就每个记录方法对应的应用场合举例如下:
2.1.1 写日志API的使用示例

     在程序中如何恰当级别的日志记录API记录日志信息是非常重要的,一般的我们将信息以其重要性调用将其划分为5个级别,分别调用相应的API来记录,我们以一个查询数据库的代码段来说明各级别的划分:
Java代码 
1. Connection conn = null;   
2.      String sqlStr = "select * from table1 where a=’"+a+"’";   
3.     // 测试变量是否正确,在调度时查看,以后不会用   
4.      logger.debug("sqlStr字串为:"+sqlStr);   
5.     // ...   
6.     try  
7.      {   
8.      conn = DBBean.getConnection();   
9.      Statement stat = conn.createStatement();   
10.      ResultSet rs = stat.executeQuery(sqlStr);   
11.     if(rs.next())   
12.      {   
13.           logger.info("有记录");   
14.                // 查看程序运行中的信息,反映程序及配置信息的情况   
15.      }   
16.     else  
17.      {   
18.             logger.warn("因配置要求至少要有一条记录,请核对配置信息。");   
19.           // 假设配置信息要求一条配置记录,当找不到记录时应该警告,   
20.                // 以并更改配置   
21.      }   
22.      }catch(SQLException e)   
23.      {   
24.                logger.error("数据查询时发生异常",e);   
25.              // 发生了查询异常,可能是sqlStr语句的语法错误造成的   
26.      }   
27.     finally  
28.      {   
29.     try  
30.      {   
31.      if(conn != null)   
32.      {   
33.        conn.close();   
34.         conn = null;   
35.      }   
36.      }   
37.     catch(SQLException e)   
38.      {   
39.              logger.warn("数据连接无法关闭,连接将无法释放",e);   
40.             // 数据连接无法关闭将导致资源泄漏,可能是系统原因产生的   
41.                // 如果持续产生这个问题,开发人员需要查明原因,   
42.                // 否则系统将因数据连接资源无法释放而崩溃   
43.      }   
44.      }
分享到:
评论

相关推荐

    log4j日志记录

    此外,Log4j还支持多语言环境下的日志处理,这意味着不仅限于Java,还可以在C/C++、.Net、PL/SQL等环境中使用,从而实现了跨平台、跨语言的日志管理。 #### 二、log4j配置指南 ##### 第一步:引入依赖 首先需要将...

    log4j配置和加载方法

    在`.properties`文件中,配置信息通过键值对的形式呈现,如示例中的`log4j.category.org.zblog=ERROR,A1`,这里指定了`org.zblog`这个logger的日志级别为`ERROR`,并关联到名为`A1`的appender。 2. **.xml格式**:...

    log4j日志的数据库管理

    在使用Log4j与数据库结合管理日志前,首先需要正确配置DBCP。以下是一系列关键步骤: 1. **准备mysql的JDBC驱动程序**:JDBC(Java Database Connectivity)是Java中用来连接数据库的标准接口,而JDBC驱动程序则是...

    Tomcat使用Log4j输出catalina.out日志

    日志格式和项目中用log4j打出来的不一致,不利于解析。 从tomcat官网(https://tomcat.apache.org/tomcat-7.0-doc/logging.html)上找了下,修改一些配置、替换扩展包即可使用log4j输出catalian.out。 在$CATALINA_...

    Spring Secruity 项目中用到的包整理

    4. `com.springsource.org.apache.log4j-1.2.15.jar`: 这是Apache Log4j的日志库,Spring Security和其他许多框架一样,使用Log4j进行日志记录,帮助开发者调试和跟踪安全相关的事件。 5. `org.springframework.web...

    读写日志文件

    在IT行业中,日志文件是记录应用程序运行状态、错误信息以及调试信息的重要工具。...在实际项目中,我们应根据需求选择合适的日志级别、格式和存储方式,同时制定合理的日志清理策略,保持系统的健康运行。

    在window是cmd下实现动态查看日志

    2. 打开命令提示符窗口,输入`tail -f 日志文件路径`,例如:`tail -f C:\path\to\your\log.log`。 3. 现在,CMD会持续显示日志文件的最新添加内容,每当文件有新的日志记录被写入,屏幕就会自动滚动更新。 除了...

    notepad++ 查看log的语言格式

    notepad++ 查看log的语言格式

    Apache log4cxx在C++多进程多线程下的使用.pdf

    Apache log4cxx 是 Apache Logging Services 三个日志记录项目之一,完全开源组件。是著名的日志记录组件 log4j 的 C++ 移植版,用于为 C++ 程序提供日志功能,以便开发者对目标程序进行调试和审计。当前的最新版本...

    log4net整理.7z

    因为在项目中需要记录Log,所以研究了一下Log4Net。我这里主要是教给大家winform如何在app.config中配置,可以让不同的Log信息存储在不同的路径下的文件中。同时附上了自己手写的一个C_LogWriter.cs输出类,配置好...

    Log Explorer for SQL Server v4.22

    服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。...

    spring boot项目和vue一起放在tomcat部署

    在本文中,我们将介绍如何将 Spring Boot 项目和 Vue 一起部署到 Tomcat 服务器中。这个过程需要我们对 Tomcat 服务器进行配置,以便能够正确地部署并运行我们的应用程序。 Spring Boot 项目和 Vue 的结合 在 ...

    linux log日志查看【syslogd logrotate】.zip

    在这个“linux log日志查看【syslogd logrotate】”的主题中,我们将深入探讨两个核心工具:syslogd和logrotate。 syslogd是Linux系统中的一个标准组件,用于收集和处理来自不同程序的日志消息。它根据预定义的规则...

    C# 数据库访问与日志类

    在"CommonUtility"这个文件或项目中,很可能包含了用于简化数据库访问和日志管理的实用工具类,这些类通常会封装上述的一些功能,以提高代码的可读性和可维护性。例如,可能会有一个数据库访问类,它使用ADO.NET或EF...

    sql2000 Log Explorer4.2(含注册码)+汉化

    服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。...

    Log Explorer for SQL Server v4.22 含注册机

    服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。...

    Log Explorer4.2帮助文档

    服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。...

    Oracle中用LogMiner分析重做及归档日志

    Oracle中的LogMiner是一个强大的日志分析工具,它内置于Oracle8i和Oracle9i数据库系统中,专门用于解析重做日志和归档日志,以获取数据库中发生的事务变化信息。LogMiner能够精确地定位DML(数据操纵语言)和DDL...

    hadoop 日志案例资源 show.log

    http://blog.csdn.net/manageer/article/details/51169742 本博客中用到

    Android-LogViewer:在android上显示Log日志的交互式应用

    有时候不想打开android ...安装 LogViewer.apk 或者git clone下载后编译LogViewer工程注意: ✎ 是可以拖拽LogViewer.apk 下载地址发送消息的测试apk TestLogViewer.apk 下载地址在你的项目中用引用 compile 'com.a

Global site tag (gtag.js) - Google Analytics