资讯专栏INFORMATION COLUMN

spring进步 -- log4j的学习

edgardeng / 3259人阅读

摘要:建议只使用四个级别,优先级从高到低分别是。比如在这里定义了级别,只有等于及高于这个级别的才进行处理,则应用程序中所有级别的日志信息将不被打印出来。可同时指定多个输出目的地。

一直感觉到log4j是使用比较混乱,今天抽空整理一下,以后方便使用

一、引用apache.log4j
使用maven进行lo4j的引用



    log4j
    log4j
    1.2.17

其他版本也可以再资源库搜索添加
http://mvnrepository.com/arti...

二、再spring的bean中或者java类中加入log4j

/**
* lo4j引用demo
*/
@Controller
@RequestMapping("demoWeb")
public class DemoWebController {
    //使用方法1 -- 用this直接代表本类
    private final Logger logger = Logger.getLogger(this.getClass());
    //使用方法2 -- 使用用本类引用
    private final Logger logger = Logger.getLogger(DemoWebController.getClass());
}

三、配置log4j配置文件(引用的lo4j百度百科)
1、在配置resources或自定义路径下配置log4j.properties(命名自定义,只要spring能检索到就可以)
2、说明:
① 配置根Logger

Logger 负责处理日志记录的大部分操作。
其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
ALL:打印所有的日志,OFF:关闭所有的日志输出。 
appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
示例:
log4j.rootLogger=info, stdout

② 配置日志信息输 Appender

##这里填写你输出的方式
og4j.appender.appenderName = {appender}

Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台)

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

org.apache.log4j.jdbc.JDBCAppender(向数据库发送日志)

org.apache.log4j.net.SMTPAppender(邮件发送日志)

示例:

##这里表示控制台的信息记录
og4j.appender.appenderName = org.apache.log4j.ConsoleAppender

## 下面是appender的基本options

##系统输出方式
log4j.appender.appenderName.Target = System.out
##生成文件路劲
log4j.appender.appenderName.File = E:filelogqc.log
##追加方式 true为在信息后面追加  false为覆盖信息后输出
log4j.appender.appenderName.Append = true
##指定输出等级
log4j.appender.appenderName.Threshold = INFO 
##布局输出
log4j.appender.appenderName.layout = org.apache.log4j.PatternLayout

③置日志信息的格式(布局)

##这里填写你输出的方式
og4j.appender.appenderName.layout  = {style}

Log4j提供的style有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:

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

%M 输出打印该条日志的方法名;

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

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

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

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

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

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

%l 输出日志事件的发生位置,及在代码中的行数;

[QC]是log信息的开头,可以为任意字符,一般为项目简称。
示例

##这里进行输出格式配置
log4j.appender.appenderName.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n

输出的信息
[demo] DEBUG [main] DemoBeanFactory.getDemo(189) | this is output log

以上就完成了基本的log4j的配置和使用

下面进行一般示例配置:

### 设置日志等级  ###
log4j.rootLogger=DEBUG,CONSOLE,DATABASE,DAIY_LOG,DAIY_INFO_LOG,DAIY_ERROR_LOG

### CONSOLE 控制台输出 ###
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### 将错误日志存到DATABASE中 ###
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
##数据库地址
log4j.appender.DATABASE.URL=jdbc:mysql://127.0.0.1:3306/demo
##数据库桥
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
##mysql用户名
log4j.appender.DATABASE.user=root
##mysql密码
log4j.appender.DATABASE.password=root
##讲console中的警告日志书写的到数据库中
log4j.appender.CONSOLE.Threshold=WARN
# INSERT INTO LOG4J (Message) VALUES ("[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n")
log4j.appender.DATABASE.sql=INSERT INTO LOG4J(stamp,thread, infolevel,class,messages) VALUES ("%d{yyyy-MM-dd HH:mm:ss}", "%t", "%p", "%l", "%m")
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### DAIYLOG 每日信息 ###
log4j.appender.DAIY_LOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DAIY_LOG.File=E:filelogdemo_all_log.log
log4j.appender.DAIY_LOG.Append=true
log4j.appender.DAIY_LOG.Threshold=ALL 
log4j.appender.DAIY_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.DAIY_LOG.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### DAIYLOG 每日INFO信息 ###
log4j.appender.DAIY_INFO_LOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DAIY_INFO_LOG.File=E:filelogdemo_info_log.log
log4j.appender.DAIY_INFO_LOG.Append=true
log4j.appender.DAIY_INFO_LOG.Threshold=INFO 
log4j.appender.DAIY_INFO_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.DAIY_INFO_LOG.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

### DAIYLOG 每日ERROR信息 ###
log4j.appender.DAIY_ERROR_LOG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DAIY_ERROR_LOG.File=E:filelogdemo_error_log.log
log4j.appender.DAIY_ERROR_LOG.Append=true
log4j.appender.DAIY_ERROR_LOG.Threshold=ERROR 
log4j.appender.DAIY_ERROR_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.DAIY_ERROR_LOG.layout.ConversionPattern=[spring-demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

自定义等后续进行补充和完善

概念引用:https://baike.baidu.com/item/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70390.html

相关文章

  • 从分析我抓取60w知乎网民来学习如何在SSM项目中使用Echarts

    摘要:一前言知乎网名的数据从何而来去年在接触爬虫的时候,接触到了一个关于知乎的爬虫。最后,本文提供的知乎网名数据是年月份左右抓取的数据。 一 前言 1.1 60w知乎网名的数据从何而来? 去年在接触Java爬虫的时候,接触到了一个关于知乎的爬虫。个人觉得写的非常好,当时抓取的效率和成功率还是特别特别高,现在可能知乎反扒做的更好,这个开源知乎爬虫没之前抓取的那么顺利了。我记得当时在我的i7+...

    TwIStOy 评论0 收藏0
  • 【Java】基于Maven搭建Spring+SpringMVC+Mybatis框架

    摘要:关于的配置,可以参考这篇文章的第一个小节配置模板引擎搭什么搭直接用脚手架不行吗下载就能用下载就能用下载就能用码云咳咳,开个玩笑,如果本着学习态度的话,那就慢慢啃吧搭建空的项目使用搭建基本的空项目填写和,,选择项目的地址,在新的窗口打开最 关于springMVC的配置,可以参考这篇文章的第一个小节:【java】intellij idea SpringMVC 配置FreeMarker模板引...

    edagarli 评论0 收藏0
  • 关于分布式框架DUBBO学习:服务注册与消费(二)

    摘要:由于是一个高性能的框架,用于进行远程服务的注册消费。以一个简单案例,来阐述框架具体应该如何使用。进行框架的安装与部署,请参阅项目的依赖配置因为使用的是项目管理工具,所以要构建的依赖配置。 由于DUBBO是一个高性能的RPC框架,用于进行远程服务的注册消费。以一个简单案例,来阐述DUBBO框架具体应该如何使用。1、进行DUBBO框架的安装与部署,请参阅:https://segmentfa...

    myshell 评论0 收藏0
  • 从零开始搭建SSM框架(Spring + Spring MVC + Mybatis)

    摘要:打开,,选中,然后再选中,输入项目的和,指定等配置,修改,打开项目,添加一些必要的目录,最终项目框架目录图如下修改文件,指定各依赖和插件的版本等信息在标签里面管理各依赖的版本号添加项目依赖管理依赖配置好之后,开始整合。 最近在回顾和总结一些技术,想到了把之前比较火的 SSM 框架重新搭建出来,作为一个小结,同时也希望本文章写出来能对大家有一些帮助和启发,因本人水平有限,难免可能会有一些...

    MiracleWong 评论0 收藏0
  • MyBatis集成Spring

    摘要:各方面有各种常见的良好示例,包括日志记录,声明式事务,安全性,缓存等。声明式事务管理这意味着你从业务代码中分离事务管理。但作为一种横切关注点,声明式事务管理可以使用方法进行模块化。支持使用框架的声明式事务管理。 本章主要内容包括Spring简介、Spring的两大特性(IOC和AOP)、事务MyBatis集成Spring等。也许有读者会疑惑,明明是MyBatis-Plus实战,怎么还讲...

    ckllj 评论0 收藏0

发表评论

0条评论

edgardeng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<