使用log4j将日志输送到控制台、文件或数据库中
转:
使用log4j将日志输送到控制台、文件或数据库中
1、log4j简述
log4j是一个用Java编写的可靠,快速和灵活的日志框架(API),是Apache一个开源项目。
Log4j是高度可配置的,并可通过在运行时的外部文件配置。它根据记录的优先级别,并提供机制,以指示记录信息到许多的目的地,诸如:数据库,文件,控制台,UNIX系统日志等。
日志级别有:
- ALL 打印所有信息
- DEBUG 打印调试信息
- ERROR 打印错误信息
- FATAL 指定非常严重的错误事件,这可能导致应用程序中止
- INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
- OFF 这是最高等级,为了关闭日志记录
- TRACE 指定细粒度比DEBUG更低的信息事件
- WARN 指定具有潜在危害的情况
一般常用的级别是DEBUG级别
使用log4j需要在项目中导入log4j的jar包,点击这里下载它的jar包。
将jar包导入项目之后,在项目的classpath路径下新建名为log4j.properties的配置文件,用于配置log4j。
下面就一一介绍如何使用log4j将日志输送到不同目的地。
1、输送到普通txt文件
- #表示该文件在D盘的log目录下
- log=D:/log
- # 根日志记录器(logger)的级别定义为DEBUG并连接附加器命名为FILE
- log4j.rootLogger = DEBUG, FILE
- # 附加器(appender)File是定义为org.apache.log4j.FileAppender并写入到一个名为“log.txt”的文件中
- log4j.appender.FILE=org.apache.log4j.FileAppender
- log4j.appender.FILE.File=${log}/log.txt
- # 定义的布局模式是%m%n,这意味着每打印日志消息之后,将加上一个换行符
- log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
- log4j.appender.FILE.layout.conversionPattern=%m%n
2、输送到格式化的html文件
- #表示该文件在D盘的log目录下
- log=D:/log
- log4j.rootLogger = DEBUG, FILE
- # Define the file appender
- # 附加器(appender)File是定义为org.apache.log4j.FileAppender并写入到一个名为“log.html”的文件中
- log4j.appender.FILE=org.apache.log4j.FileAppender
- #生成html文件
- log4j.appender.FILE.File=${log}/log.html
- log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
- log4j.appender.FILE.layout.Title=HTML Layout Example
- log4j.appender.FILE.layout.LocationInfo=true
3、输送到控制台
- #定义LOG输出级别、输出到控制台、文件
- log4j.rootLogger = DEBUG,STDOUT
- # 定义控制台 STDOUT appender
- log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
- log4j.appender.STDOUT.Target=System.out
- #定义日志输出目的地为控制台
- log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
- log4j.appender.STDOUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%m%n
4、输送到数据库
这里以mysql数据库为例,将日志输送到数据库,实质就是讲日志存储到数据表中,为此,我们先建立一张用于存储日志的表
- CREATE TABLE LOGS
- (USER_ID VARCHAR(20),
- DATED DATETIME,
- LOGGER VARCHAR(50),
- LEVEL VARCHAR(10),
- MESSAGE VARCHAR(1000)
- );
然后,再配置log4j.properties
- # Define the root logger with appender file
- log4j.rootLogger = DEBUG, DB
- # Define the DB appender
- log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
- #定义数据库url
- log4j.appender.DB.URL=jdbc:mysql://127.0.0.1:3306/formybatis?characterEncoding=UTF-8
- #定义数据库驱动
- log4j.appender.DB.driver=com.mysql.jdbc.Driver
- #定义用户名和密码
- log4j.appender.DB.user=root
- log4j.appender.DB.password=ok
- # 设置存储到log表的insert语句
- log4j.appender.DB.sql=INSERT INTO LOGS(user_id,dated,logger,level,message) VALUES("%x","%d{yyyy-MM-dd HH:mm:ss}","%C","%p","%m")
- # Define the layout for file appender
- log4j.appender.DB.layout=org.apache.log4j.PatternLayout
2、大致了解一下log4j2
log4j2是重新架构的一款日志组件,他抛弃了之前log4j的不足,以及吸取了优秀的logback的设计重新推出的一款新组件。log4j2的社区活跃很频繁而且更新的也很快。
log4j是通过一个.properties的文件作为主配置文件的,而现在的log4j 2则已经弃用了这种方式,采用的是.xml,.json或者.jsn这种方式来做,可能这也是技术发展的一个必然性,毕竟properties文件的可阅读性真的是有点差。
使用log4j将日志输送到控制台、文件或数据库中的更多相关文章
- 如何保存PDF、Word和Excel文件到数据库中
在项目中,有时候我们很需要把PDF.Word和Excel文档等等上传到数据库,以便日后使用.今天这篇文章向大家讲解如何将这些文件保存到数据库的. 详细步骤 第一步:打开数据库,单击新建查询,创建一个名 ...
- log4j将日志输出到控制台,文件,邮件
#将日志写到文件 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=e\:\ ...
- 采用SHELL,通过SQL LOAD导入一定格式的txt文件至数据库中
1. 准备工作,window中可直接通过sqlload直接导入文件,linux下,需要有sqlload的相关软件. 2. SQL脚本(MID_DFDZ.ctl) LOAD DATA INTO TABL ...
- Log4Net的应用教程之保存日志到数据库中
关于Log4Net的应用,网上有很多教程,但大多数都是拷贝复制,有些按照他的代码来,运行起来发现也出不来效果,但是Log4net的作用实在是非常大的,或者这里说的不对,应该说系统的日志功能是很重要的也 ...
- 使用 hibernate 根据映射文件生成数据库表
为了更好的显示效果,可以在hibernate.cfg.xml配置文件的<session-factory>标签里加入以下内容: 显示sql语句和格式化显示sql语句: <propert ...
- 【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中
[exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后 ...
- 转-【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中
原帖地址:http://blog.csdn.net/lihuarongaini/article/details/71512116 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完 ...
- Pandas dataframe数据写入文件和数据库
转自:http://www.dcharm.com/?p=584 Pandas是Python下一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作,DataFr ...
- struts2解决动态多文件上传的问题(上传文件与数据库字段一一对应)(转)
struts2多文件上传我想只要会用struts2的朋友都不会陌生,但是怎么在action中根据用户上传的文 件把文件路径写到数据库中对应的字段上呢?ps:我的意思是这样,页面上有固定的5个上传文件的 ...
随机推荐
- Maven01-maven打包Web项目成war文件-tomcat脱机运行启动项目
1 执行package 2 复制 3 catalina run ,打开cmd窗口 4 输入网址 5注意要配置tomcat的 Application context为工程名字
- tensorflow 与cuda、cudnn的对应版本关系
来源:https://www.cnblogs.com/zzb-Dream-90Time/p/9688330.html
- vue 中数据共享的方式
1.父子组件的数据传递2.store模式 - 局部的数据共享3.vuex 中共享 state - 全局的数据共享
- python_并发编程——消费者和生产者模型
消费者和生产者模型 from multiprocessing import Process,Queue import time import random class Producer(Process ...
- babyheap_fastbin_attack
babyheap_fastbin_attack 首先检查程序保护 保护全开.是一个选单系统 分析程序 void new() { int index; // [rsp+0h] [rbp-10h] sig ...
- .net web api 返回的是xml
var result = new HttpResponseMessage { Content = new StringContent(JsonConvert.SerializeObject(dto2) ...
- php自定义函数之匿名函数
所谓匿名,就是没有名字. 匿名函数,也就是没有函数名的函数.直线电机参数 匿名函数的第一种用法,直接把赋数赋值给变量,调用变量即为调用函数. 匿名函数的写法比较灵活. 1.变量函数式的匿名函数 < ...
- learning armbian steps(3) ----- armbian 文件系统定制思路
如何定制自已的armbian文件系统. 1)uboot 2) kernel 3) rootfs 针对linux 系统开发人员来说,真正有用的只是其armbian文件系统, 将其制作成所需的文件系统 ...
- WSAStartup() - 使用方法
当一个应用程序调用WSAStartup函数时, 操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中. 以后应用程序就可以调用所请求的Socket库 ...
- 【angularJS】学习笔记
一.一个html中多个ng-app //对于ng-app初始化一个AngularJS程序属性的使用需要注意,在一个页面中AngularJS自动加载第一个ng-app,其他ng-app会忽略 //如果需 ...