当前位置: 首页 > 编程日记 > 正文

log4j在eclipse上使用简介

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

那么,我们应该如何配置和使用log4j呢?


<1>首先,我们要配置jar包,通过搜索引擎搜索log4j maven,保存进pom.xml即可
<2>配置文件,通常将log4j.properties放置到src目录下,, log4j.properties代码样式如下:

log4j.rootCategory=DEBUG, file, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d-[TS] %p %t %c - %m%nlog4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=target/test.log
log4j.appender.file.MaxFileSize=5120KB
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n##SPRING改为WARN级别
log4j.logger.org.springframework=DEBUG
log4j.logger.org.mybatis=WARN
log4j.logger.org.apache.velocity=WARN
log4j.logger.org.apache.commons=WARN##显示SQL语句部分,生产环境请调整为ERROR
log4j.logger.com.mybatis=DEBUG 
log4j.logger.com.mybatis.common.jdbc.SimpleDataSource=DEBUG 
log4j.logger.com.mybatis.common.jdbc.ScriptRunner=DEBUG 
log4j.logger.com.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG


<3>配置好了log4j,我们接下来分享一下它要如何使用。首先,我们要了解log4j的三大组件:
Logger(日志类别):
Appender(日志输出目的地)
Layout(格式化输出日志信息)
1,对于logger,log4j提供四种级别,从低到高分别是DEBUG、INFO、WARN、ERROR 、FATAL。我们可以通过更改log4j.properties中的属性来对输出级别进行设置

log4j.rootCategory=DEBUG, file, stdout//例如,设置级别为debug


当我们设置好一个级别之后,比该级别低的日志信息将不会再显示,log4j只会显示和设置级别一样或者比日志级别高的信息
2,对于Appender,Appender可以控制日志输出的目的地。

log4j.appender.appenderName = 属性值

属性值可以设置成以下几种,每种都是不同的日志输出方式

org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

如果想具体的设置日志输出属性,比如路径,日志文件的大小…可以通过自定义的appenderName.option来设置

log4j.appender.appenderName.option1 = value

3,Layout(格式化输出日志信息),Layout可以控制输出信息的格式,用法类似于C语言中scanf,prinf的参数

log4j.appender.appenderName.layout = 属性值
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)log4j.appender.appenderName.layout.option1 = value1
ConversionPattern (举例:%d-[ZZXTIT] %p %t %c - %m%n)


每个字符都有独特的含义,下面是字符含义表

  • %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL
    %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
    %r: 输出自应用启动到输出该log信息耗费的毫秒数
    %c: 输出日志信息所属的类目,通常就是所在类的全名
    %t: 输出产生该日志事件的线程名
    %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
    %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中
    %%: 输出一个”%”字符
    %F: 输出日志消息产生时所在的文件名称
    %L: 输出代码中的行号
    %m: 输出代码中指定的消息,产生的日志具体信息
    %n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行


现在,我们可以具体的使用log4j了

private final Log log=LogFactory.getLog(LoginFilter.class);


因为我们输出的日志信息不希望被修改,我们可以将其设置为final,在getlog中传入当前类的类名(不错,我在做过滤器…)之后,使用对象名点方法名即可输出日志信息

log.debug("这是一条debug信息");

这样,日志信息就成功输出了

相关文章:

关于编程的浅学习与深学习

导读&#xff1a;Tanky Woo的程序人生在博客中发表了《关于编程的浅学习与深学习》&#xff0c;文章是关于编程学习的一个提议、归纳、总结。以下是文章全部内容&#xff1a;关于编程的学习&#xff0c;大家肯定都知道&#xff0c;也是大家都说来说去的&#xff0c;就几句话&am…

shiro实战系列(一)之入门实战

一、什么是shiro? Apache Shiro 是一个强大而灵活的开源安全框架&#xff0c;它干净利落地处理身份认证&#xff0c;授权&#xff0c;企业会话管理和加密。 Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的&#xff0c;甚至是痛苦的&#xff0c;但它没有必要…

数据源和连接池

JDBC数据源&#xff1a; Data Source JDBC中提供了javax.sql.DataSource接口&#xff0c;负责建立与数据库的连接 DataSource对象可以由Web服务器提供&#xff0c;前提是需要在服务器配置DataSource&#xff08;包括连接池&#xff09; 连接池&#xff1a;Connection Pool…

FastReport.net 使用 Winform WebForm打印

delphi用的fastreport比较多 所以。net中也研究一下用法,这个打印控件还是很简单的 只要手动设计一下写少许代码就可以打印了 甚至可以写成通用代码 以后就可以不用写代码 安装demo会同时安一个设计器 打开设计器 通过设计器设计模板 新建数据源 新建数据集 查询单表全部内容&…

Ubuntu 12.04安装Sun JDK 6

Ubuntu 12.04安装Sun JDK 6 下载 sun jdk 6 bin. 设置权限 chmod x jdk-6u25-linux-i586.bin 解压文件 ./jdk-6u25-linux-i586.bin 移动位置到 sudo mv jdk1.6.0_25 /usr/lib/jvm/ 设置系统环境 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.…

如果你的云服务商倒闭该怎么办?

如果你的云服务商倒闭或暂时中断服务&#xff0c;以下4个步骤能够帮助你的企业把损失减少到最低。 2009年2月&#xff0c;云服务商Coghead在一封写给客户的电子邮件中宣布该公司"由于受到经济挑战的影响"&#xff0c;将立即终止基于云的开发平台服务。随后&#xff0…

Ubuntu16.04桌面系统如何配置和启动wireshark

上一篇介绍了在Ubuntu系统中安装wireshark 本篇介绍在Ubuntu系统中配置和启动wireshark&#xff1b; 安装好后&#xff0c;直接在终端运行$ wireshark。出于安全方面的考虑&#xff0c;普通用户不能够打开网卡设备进行抓包&#xff0c;Wireshark不建议用户通过sudo在root权限下…

[导入]笔记本”终极“散热方案

笔记本老了&#xff0c;三年了&#xff0c;电池不太行了&#xff0c;散热量也大。解决电池问题首先是能耗的问题&#xff0c;我把能够卸下来的光驱和读卡器都拆了&#xff0c;这下留了一个大长孔&#xff0c;很好的是这样散热问题也得到了解决&#xff0c;光驱的大孔和读卡器那…

Android中Broadcast

前一段时间&#xff0c;听说过android的广播&#xff0c;这段时间经过研究终于可以写出一个Demo 首先新建一个android工程项目 在BroadCastActivity.java中 package com.mypack;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import…

java web三大组件之filter过滤器

过滤器是java web中相当重要的组成成分&#xff0c;是JavaWeb三大组件之一&#xff0c;它与Servlet很相似。不过过滤器有以下三条特性&#xff1a; 过滤器是用来拦截请求的&#xff0c;而不是处理请求的。当用户请求某个Servlet时&#xff0c;会先执行部署在这个请求上的Filte…

Permission denied: make_sock: could not bind to address [::]:81 Apache 虚拟主机

想建立一个测试用的虚拟主机&#xff0c;遇到了这个问题&#xff1a; [rootlocalhost html]# service httpd start Starting httpd: httpd: Could not reliably determine the servers fully qualified domain name, using localhost.termwikidev for ServerName (13)Permissio…

E: GPG 错误:http://developer.download.nvidia.com Release: 下列签名无效: NODATA 1 NODATA 2...

参考链接&#xff1a;https://github.com/NVIDIA/nvidia-docker/issues/571 在安装CUDA的时候出现的问题&#xff0c;根本原因是各位都懂的地区局域网特色&#xff0c;我试了很多方法&#xff0c;结果还是Github上一个老铁提出的一个简单方法&#xff1a;修改/etc/apt/sources.…

spring 框架学习(一)

1、spring简介 Spring 是一个开源框架&#xff0c;是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构&#xff0c;分层架构允许您选择使用哪一个组件&#xff0c;同时为 J2EE 应用程序开发提供集成的框架。Spring的一个最大的目的就是使JAVA EE开发…

Styling with the DataGridColumnStyle

详细讲解了如何自定义DataGrid控件&#xff0c;将多种控件&#xff08;如&#xff1a;进度条、按钮、下拉框&#xff09;绑定到数据列中 参考MSDNPart 1&#xff1a;http://msdn.microsoft.com/en-us/library/ms996449Part 2&#xff1a;http://msdn.microsoft.com/en-us/libra…

Excel常用公式记录

1.生成指定时间段内的日期&#xff1a; TEXT("2019/8/9 00:00"RAND()*54,"yyyy/mm/hh HH:MM") 注意&#xff1a;RAND()*54&#xff0c;54指从2019/8/9日起的54天&#xff0c;有时会有2019/8/00的错误格式 2.生成类似于“第一级”&#xff0c;“第二级”类似…

Delphi XE2 发布了,期待了很久的东西,开始学习中。

这个博客将记录我学习DELPHI XE2及开发相关应用程序的点点滴滴&#xff0c;因此该博客内容全部原创&#xff0c;我也不会转载和抄录别人的代码。为了让大家和我一同进步&#xff0c;所有示例都带源代码&#xff0c;你可以随时下载后进行调试运行。 Delphi--一个伴随我12年的开发…

基于libmad库的MP3解码简析

基于libmad库的MP3解码简析 MAD &#xff08;libmad&#xff09;是一个开源的高精度 MPEG 音频解码库&#xff0c;支持 MPEG-1&#xff08;Layer I, Layer II 和 LayerIII&#xff08;也就是 MP3&#xff09;。LIBMAD 提供 24-bit 的 PCM 输出&#xff0c;完全是定点计算&#…

oracle数据库增加新字段

--Add/modify columns alter table 表名 add 字段名 类型; --------------------------------------------------------------------- --Add comments to the columns comment on column CE00.eec000 is xxx;转载于:https://www.cnblogs.com/yby120/p/9138801.html

list @size 验证_第33期:上海自来水来自海上,回文字符串验证!

我准备了 1000 本电子书和计算机各领域高清思维导图 100 张&#xff0c;关注后回复【资源】&#xff0c;即可获取&#xff01;更可回复【内推】加入 BAT 内推群&#xff01;01、题目示例见微知著&#xff0c;发现一组数据很有趣&#xff0c;分享给大家。leetcode 第一题通过次数…

安装apache的时候80端口被PID为4的系统进程所占用

由于工作中需要直接从MySQL后台读取数据&#xff0c;所以安装了PHPnow&#xff0c;装的过程中提示Apache安装失败&#xff0c;80端口被占用。 在cmd中输入netstat –ano命令&#xff0c;发现80端口被一个PID为4的服务所占用&#xff0c;打开任务管理器&#xff0c;发现PID为4的…

PHP根据时间戳返回星期几

为什么80%的码农都做不了架构师&#xff1f;>>> <?php /*** 根据时间戳返回星期几* param string $time 时间戳* return 星期几*/ function weekday($time) {if(is_numeric($time)){$weekday array(星期日,星期一,星期二,星期三,星期四,星期五,星期六);return…

FastCGI与php-fpm

FastCGI&#xff1a;为了兼顾IIS下PHP的效率和安全&#xff0c;微软给出了FastCGI的解决方案。同ISAPI原理有些类似&#xff0c;就是减少CGI初始化等前置操作的消耗。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行…

postmaster.c 中的 ListenAddresses

在 postmaster.c 中看到这种代码&#xff0c;从Java程序员的角度&#xff0c;看起来是很不爽的: char *ListenAddresses; ...if (ListenAddresses){ char *rawstring; List *elemlist; ListCell *l; ... 到底何…

PHPCMS V9 杂记一

PHPCMS V9加载顺序 PHPCMS V9和V8相比&#xff0c;总体思路方向是一样&#xff0c;不同的是V9把OOP和MVC结合得更加完美。 打开根目录下面的index.php 三行代码&#xff0c;相比V8的 index.php来说 更加清楚&#xff0c; phpcms下面的base.php文件&#xff0c;是一个基础类&…

esp32 camera_利用Phyphox和ESP32蓝牙制作欧姆表测电阻

近日&#xff0c;微主在利用Phyphox和ESP32蓝牙研究热敏电阻的阻值与温度的关系时&#xff0c;需要绘制热敏电阻阻值与时间的关系图像&#xff0c;通过用手捏住或者放开热敏电阻&#xff0c;观察电阻与时间关系图像的变化情况&#xff0c;进而了解温度对热敏电阻的影响。将热敏…

linux tomcat集群配置笔记

趁最后一天假期,配置linux环境下的apache集群,巩固下,免的以后用到又忘记,网上东拼息凑,环境弄好后,整到blog,以便以后用到。 参考来源&#xff1a;http://www.linuxidc.com/Linux/2011-03/32859.htm 我用的版本&#xff1a; httpd-2.2.21.tar.gz apache-tomcat-6.0.32.tar.gz …

spring -- 自定义注解

我们直接通过代码解释自定义注解的使用及各个含义 package com.sysware.cloud.dts.annotation;import java.lang.annotation.*;Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) Inherited Documented public interface DtTransactional {/** Whether need to…

angular 字符串转换成数字_蓝盟IT外包,Python算法的一般技术和嵌入式库|python|字符串|key|算法|调用...

近年来&#xff0c;随着python着火&#xff0c;python也开始受到很多程序员的喜爱。 很多程序员已经开始使用python作为第一语言。最近在python上刷问题时&#xff0c;我想去找python的刷问题常用库api和刷问题技术。 和c的STL库文档一样&#xff0c;但很遗憾没有找到。 因此&a…

Mapping Persistence Classes 笔记2---ValueType的形式和映射

2010年5月17日 简介&#xff1a; 前面的笔记着重讲解了实体类以及其class-mapping options&#xff0c;本章笔记将关注值类型的形式以及其OR映射选项。 值类型一般可分为两类&#xff1a;JDK类型和用户自定义类型。本章首先从实体类的使用JDK类型的properties开始&#xff0c;讲…

安装wampserver及配置php,phpmyadmin遇到的问题及解决方法

wampserver 安装好以后&#xff0c;打开&#xff0c;发现appache无法启动&#xff0c;查了一下&#xff0c;发现是前安装过iis&#xff0c;iis使用80端口&#xff0c;打开httpd.conf&#xff0c;把里面所有的80都改成了81&#xff0c;然后appache就可以正常启动了。 再配置wamp…