`

javaWeb 使用log4j 记录系统日志 (记录保存到数据库)

阅读更多

问题:项目中要求将登陆用户进行的操作保存到数据库,以供查询等。经过了解以及网上查询,决定使用log4j日志文件。

 

使用步骤:

 

一:在lib目录下,导出使用log4j 日志文件要使用的jar包; 在classpath目录下(即:项目的src目录下),新建一个日志文件,统一命名为:log4j.properties;

 

二:根据数据库中的字段,在上面新建的日志文件中,进行参数配置;

1、当数据库中的字段没有登录者的相关信息如:userId、userName时,日志文件中的配置如下:

#level log4j建议使用4个级别,优先级从高到低是:ERROR、WARN、INFO、DEBUG
log4j.rootLogger=WARN,DATABASE
#log4j.addivity.org.apache=true
#用于数据库(MySql 数据库)
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://172.16.1.223:3306/lgisp?characterEncoding=utf8
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=lgisp123\#

log4j.appender.DATABASE.sql= INSERT INTO lgisp_config_log(LOG_LEVEL,LOG_TYPE,OPERATE_NAME,OPERATE_TIME,OPERATE_DES) VALUES('%p','%p','%c','%d{yyyy-MM-dd HH:mm:ss}','%m')

 

2、当数据库中的字段涉及到登录者的相关信息时,这时,我们要使用log4j 为我们提供的MDC(MDC是log4j中非常有用的类,用于存储应用程序中的上下文信息 context information,从而可以在log中使用这些上下文信息。MDC内部使用了类似Map 的机制来存储信息,上下文信息也是每个线程独立的存储,所不同的是信息都是以它们的key值存储在map 中,相对应的方法是:MDC.put(key,value);MDC.remove(key);MDC.get(key);在配置PatternLayout时,使用::%x{key}来输出对应的value。

 

 在程序中适合的位置,我们可以使用log4j的MDC保存登录者的相关信息:

  MDC.put("userId", DEFAULT_USERID);
  MDC.put("userName",DEFAULT_Name );

 

然后:把日志文件中的:log4j.appender.DATABASE.sql语句 写成:log4j.appender.DATABASE.sql= INSERT INTO lgisp_config_log(LOG_LEVEL,LOG_TYPE,OPERATE_NAME,OPERATE_TIME,OPERATE_ENDTIME,OPERATE_USER_ID,OPERATE_USER_NAME,OPERATE_DES) VALUES('%p','%p','%c','%d{yyyy-MM-dd HH:mm:ss}','%d{yyyy-MM-dd HH:mm:ss}','%X{userId}','%X{userName}','%m')

 

注:log4j日志文件中输出格式控制:PatternLayout参数含义(引用http://logging.apache.org/log4j/2.x/manual/layouts.html)

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 

分享到:
评论

相关推荐

    Log4j日志处理包

    Log4j是Java编程语言中广泛使用的开源日志框架,尤其在JavaWeb和J2EE应用开发中扮演着至关重要的角色。它为开发者提供了一种灵活、高效且可扩展的日志记录机制,使得应用程序的调试、监控和问题排查变得更加简单。...

    log4j2lib.rar

    "log4j2lib.rar"这个压缩包文件包含了运行JavaWeb项目中使用Log4j2所需的核心库,下面我们将深入探讨Log4j2的核心概念、配置方式以及其在实际项目中的应用。 1. **Log4j2核心组件** - **Logger**:日志记录器,它...

    javaWeb投票管理系统源码(含数据库脚本以及安装说明).rar

    Log4j或SLF4J用于记录系统日志;Spring Framework可能被用来整合各种组件,提供依赖注入和AOP(面向切面编程)等功能。 总的来说,这个JavaWeb投票管理系统源码涵盖了Java Web开发的多个方面,从基础的Servlet和JSP...

    javaweb 人员管理系统

    6. 错误处理与日志记录:使用Exception Handling进行错误处理,结合Log4j或SLF4J进行日志记录,便于系统调试和问题定位。 四、系统优化 为了提升用户体验和系统性能,可以考虑以下优化措施: 1. 使用缓存技术,如...

    基于Java web的学生管理系统(源码+数据库).zip

    - 应用程序应有良好的错误处理机制,如try-catch-finally结构,以及使用日志库(如Log4j)记录运行时的异常信息,便于调试和维护。 10. **部署与运行** - 学生管理系统需要在Web服务器(如Tomcat)上部署,通过...

    javaweb教务管理系统源码

    6. 错误处理与日志记录:为了确保系统的稳定性和可追踪性,开发者可能会集成Log4j或SLF4J进行日志记录,同时使用异常处理机制,如try-catch-finally,来捕获并处理可能出现的问题。 7. 前端技术:尽管JavaWeb主要...

    javaweb在线电影网站源码(含数据库).zip

    Spring框架中的@ControllerAdvice和@ExceptionHandler可以全局处理异常,而Log4j或SLF4J用于记录应用程序的运行日志。 9. **部署与运行**:项目可能使用Tomcat或Jetty这样的应用服务器部署运行,配置合适的环境变量...

    javaweb图书管理系统

    系统应该有良好的异常捕获和处理机制,并配合日志框架如Log4j记录运行信息。 8. **前端界面设计** 使用HTML、CSS和JavaScript等技术构建用户友好的界面,提供直观的操作体验。例如,Bootstrap或Vue.js等库可以帮助...

    基于JavaWeb的在线影院订票系统源码+数据库

    6. **异常处理与日志记录**:通过使用try-catch语句和日志框架(如Log4j),对可能出现的异常进行捕获和记录,以便于问题排查和系统维护。 这个项目为学习JavaWeb开发、数据库设计以及前后端交互提供了实践平台,...

    javaWeb银行账户管理系统源码

    了解如何使用try-catch-finally以及日志框架如Log4j是必要的。 10. **单元测试**:通过JUnit等工具进行单元测试,确保每个模块的功能正确无误,是软件开发的重要环节。 11. **版本控制**:使用Git等版本控制系统...

    JavaWeb初级实例日志管理系统MVC,Struts,SSH

    JavaWeb初级实例中的日志管理系统是一个基于MVC(Model-View-Controller)设计模式的Web应用,它结合了Struts和SSH(Spring、Struts、Hibernate)两大主流框架,为开发者提供了一个简单但完整的日志记录和管理平台。...

    javaweb学生信息管理系统-源码.zip

    项目可能会使用try-catch语句处理异常,通过Log4j或其他日志框架记录系统运行日志。 这个"javawebProject-master"文件名表明了项目的主目录,其中可能包含src(源代码)、webapp(Web应用目录)、pom.xml(Maven...

    基于JavaWeb的在线考试系统

    - **日志**:使用Log4j或Logback记录系统运行日志,便于问题排查。 整个项目不仅锻炼了开发者对JavaWeb技术的掌握,还涵盖了软件工程中的需求分析、设计、编码、测试等多个环节,是学习和实践Web开发的良好案例。...

    Javaweb操作数据库相关依赖

    这意味着开发者可以使用相同的API来记录日志,而实际的日志实现(如Log4j、java.util.logging等)可以在运行时动态选择。这对于项目的可移植性和灵活性非常有帮助,尤其是在Java Web应用中,日志对于调试和监控系统...

    基于JavaWeb的会议管理系统源码.zip

    7. **异常处理与日志记录**: 使用try-catch语句进行异常处理,同时结合Log4j或SLF4J记录系统运行日志,便于排查问题。 8. **测试与调试**: 可能包含JUnit测试用例,用于单元测试和集成测试,确保代码质量。 9. **...

    基于javaweb的学生成绩管理系统源码+数据库.zip

    9. **错误处理与日志记录**:良好的错误处理机制能捕获并报告异常,日志记录则有助于问题排查和系统监控,可能使用了Log4j或SLF4J等日志框架。 10. **版本控制**:.git文件表明项目使用Git进行版本控制,这是一种...

    javaWeb新闻管理系统的jar包集合.rar

    JavaWeb应用中常见的日志框架有Log4j、SLF4J和Logback。对应的jar包如`log4j.jar`、`slf4j-api.jar`和`logback-classic.jar`可以记录程序运行过程中的信息。 5. 文件上传:新闻管理系统可能涉及用户上传图片或附件...

    javaweb课程大作业二手车交易系统源码+数据库,javaweb课程设计基于SSM的二手车交易系统源码

    9. **日志记录**:为了方便问题排查和系统监控,通常会集成Log4j或Logback进行日志记录,记录系统运行状态和错误信息。 10. **部署与优化**:项目部署可能涉及到Tomcat服务器配置,以及性能优化,如静态资源分离、...

    JavaWeb图书管理系统.rar

    使用如Log4j这样的日志框架,可以方便地记录系统运行时的异常信息,便于后期分析和调试。 在开发过程中,版本控制工具如Git的使用也非常重要,它可以帮助团队协作,管理代码变更。同时,使用如Maven或Gradle这样的...

    javaweb库存管理系统

    - **日志记录**:使用Log4j等记录系统运行日志,便于问题排查。 - **单元测试**:JUnit或Mockito等工具进行单元测试,保证代码质量。 - **持续集成/持续部署(CI/CD)**:如Jenkins,实现代码提交自动测试、部署。 ...

Global site tag (gtag.js) - Google Analytics