- 浏览: 304001 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (298)
- Tomcat (3)
- ZooKeeper (1)
- Maven (11)
- opensource (1)
- DataBase (5)
- UML (8)
- linux (87)
- Java (32)
- 算法 (3)
- Redis (1)
- HBase (2)
- 产品 (1)
- 模板引擎 (1)
- Eclipse (10)
- JUnit (5)
- Log4j (8)
- XML (2)
- JSON (1)
- SpringMVC (23)
- Spring (24)
- TCP/IP (4)
- Windows (10)
- Web Service (1)
- 源码版本管理 (1)
- Word (1)
- Test (1)
- Mybatis (7)
- CentOS (2)
- 多线程 (2)
- Web (7)
- Servlet (3)
- JavaWeb (4)
- MySQL (7)
- 汇编语言 (2)
- linux Shell (4)
- GIT (4)
- Python (1)
- 并发 (4)
- 编程通用 (1)
- JavaScript (1)
- 异常 (3)
- 自动化部署 (1)
- 大数据 (1)
- hive (2)
- 文本编辑器 (2)
- MINA (0)
- intellij IDEA (9)
- masm (0)
- blockchain (1)
- docker (2)
- IDEA (0)
- GO (3)
- nginx (1)
- springBoot (3)
- Websocket (2)
- macOS (1)
最新评论
-
woodding2008:
ss –pl 可以查看监听方式启动的端口以及pid
根据端口查PID,根据PID查进程名称 -
masuweng:
恩很试用,也很常用。
linux 常用命令
1什么是日志:
程序运行时,往特定输出文件或数据库里输出程序信息,如:出错信息,运行记录,调试记录,等等。
日志(LOG)一般分为以下几种类型。
FATAL:系统错误(大错误)(程序被错误中断)
系统出现大错误时输出(程序无法处理的大错误,如硬件错误)
ERROR:异常(程序被错误中断)
程序运行时出现的错误(程序员可以捕获处理)
WARN :警告(程序不会中断)
程序不算出错,但以不推荐方式运行时输出。
INFO : 信息(程序不会中断)
程序中有意输出的信息,如程序运行信息,如“程序开始”“程序结束”等。
DEBUG: 调试记录(程序不会中断)
调试程序时,跟踪程序运行的输出信息。
2 Log4J的使用。
Log4J是为了输出日志的Java程序包,是Apached的一个子项目。
可在http://logging.apache.org 下载并免费使用。
可以把LOG输出到,控制台,文件,或数据库。
这个网址里有很多Log4程序包,他们分别是,
log4c -- ANSI C 版
log4E -- Eiffel 版
log::Log4perl -- Perl 版
log4net -- .NET 版
log4r -- Ruby 版
log4j -- Java版
3 Log4J的能输出LOG的优先级。
OFF 级别高,关闭所有LOG
FATAL不可预想的无法继续运行程序的场合,一般是写进syslog(系统日志),在应用程序中很难捕获。
ERROR出现异常,应用程序停止运行等,需要紧急对应的程度的错误。
WARN 警告,以不建议的方式运行。
INFO 信息,实际运行中最基本程度的信息,如,启动服务器,运行某某程序或方法,运行结束等。
DEBUG调试时输出的信息,有可能产生非常大量的LOG文件。
如为解决问题而设置输出断点LOG等。DEBUG调试时输出的信息,所以投入运行时一般关闭DEBUG级别的LOG。
tracever log4j的 1.2.12 新加入比DEBUG还小的断点。
ALL 级别低 打开所有LOG
4 Struts使用Log4J。
项目里的,[JavaSource]下做一个,log4j.xml或log4j.properties以后Struts就可以使用Log4J了,log4j.xml,log4j.properties是Log4J的设置文档。struts先读入log4j.xml,要是没有再读入log4j.properties。我认为log4j.xml更容易理解,而且可以做到赛选各种级别LOG后输出(log4j.properies无法赛选),所以只讲log4j.xml。
5 Log4j.xml设置方法。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- org.apache.log4j.ConsoleAppender (输出到控制台),
org.apache.log4j.FileAppender (输出到文件),
org.apache.log4j.DailyRollingFileAppender(每天输出产生一个日志文件),
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件), 可通过 log4j.appender.R.MaxFileSize=100KB 设置文件 大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
-->
<!-- 输出通道"STDOUT",输出所有信息到控制台(也就是System.out.println()) -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<!--
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
org.apache.log4j.PatternLayout (可以灵活地指定Log内容布局模式),
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
-->
<!-- 输出自定义内容的LOG -->
<layout class="org.apache.log4j.PatternLayout">
<!--
%m 输出代码中指定的消息
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出打了Log的类名,%c{1}从类名开始输出一个,
例如com.tongshida.Action,{1}时只输出Action, {2}输出 tongshida.Action
%C 输出.Error()方法所在的类。
%M 输出生成LOG的类当中的方法名称
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows 平台为 “rn”,Unix 平台为 “n”
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在
其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似:
2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
%[数值]p 输出的%p字符串长度小于[数值]时,补空格,默认右对齐,前加-号,左对齐,这里也可以是%m等别的
%.[数值]p输出的%p字符串长度大于[数值],后面切掉。
%[数值].[数值]p 就是综合上两行。
-->
<!-- 输出时Log内容的具体定义 -->
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
</appender>
<!-- 输出通道"DEBUG",输出方式是:只输出DEBUG级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
<!-- 输出Log文件的路径和文件名 -->
<param name="File" value="logs/debug/debug.log"/>
<!-- TOMCAT等WEB服务器重新启动时,是否插入到原有的LOG文件里,true 插入false 新建 -->
<param name="Append" value="true"/>
<!-- 只输出定义的级别以上的LOG,因为在下面过滤LOG信息所以屏蔽 -->
<!-- param name="Threshold" value="info"/ -->
<!-- 因选择了RollingFileAppender了才有下面两个 MaxFileSize,MaxBackupIndex 选项 -->
<!-- MaxFileSize是一个LOG文件的最大的文件大小,当LOG文件超过这个值时,自动转成 *.log.1的LOG文件 -->
<param name="MaxFileSize" value="500KB"/>
<!-- MaxBackupIndex生成自动转成 *.log.1的LOG文件的个数,设置3时最多生成3个LOG备份文件,它们是[*.log.1][*.log.2][*.log.3] -->
<param name="MaxBackupIndex" value="2"/>
<!-- 输出时Log内容的具体定义 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<!-- 过滤输出时Log内容,在这里,LevelMin,LevelMax都定义了DEBUG,所以只输出DEBUG级别LOG的数据 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 指定输出LOG内容的最低等级 -->
<param name="LevelMin" value="DEBUG"/>
<!-- 指定输出LOG内容的最高等级 -->
<param name="LevelMax" value="DEBUG"/>
</filter>
</appender>
<!-- 输出通道"INFO",输出方式是:只输出INFO级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="INFO" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/info/info.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<!-- 输出通道"WARN",输出方式是:只输出WARN级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="WARN" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/warn/warn.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="WARN"/>
<param name="LevelMax" value="WARN"/>
</filter>
</appender>
<!-- 输出通道"ERROR",输出方式是:只输出ERROR级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/error/error.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
<!-- 输出通道"FATAL",输出方式是:只输出INFO级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="FATAL" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/fatal/fatal.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="FATAL"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 输出通道"ALL",输出方式是:输出所有级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="ALL" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/all/all.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 输出通道"EVERYDAY",输出方式是:输出所有级别的LOG,并每天一个日志文件 -->
<appender name="EVERYDAY" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="logs/ereryday/ereryday.log"/>
<param name="Append" value="true"/>
<!-- param name="Threshold" value="DEBUG"/ -->
<!-- 以日为单位输出LOG文件,每日输出一个LOG文件-->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<!-- 以时为单位输出LOG文件,每小时输出一个LOG文件
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
-->
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message -->
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
<!-- The full pattern: Date MS Priority [Category] (Thread:NDC)
Message <param name="ConversionPattern"
value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
-->
</layout>
<!-- 过滤输出时Log内容,在这里,LevelMin是DEBUG,LevelMax都FATAL,所以输出DEBUG级别到FATAL级别的LOG数据 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 输出通道"DATABASE",输出方式是:输出所有级别的LOG到数据库 -->
<appender name="DATABASE" class="org.apache.log4j.jdbc.JDBCAppender">
<!--数据库的驱动,这里用的是MSSQL-->
<param name="driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<!--这是Oracle用的驱动,在这里用MSSQL所以屏蔽掉了
<param name="driver" value="oracle.jdbc.driver.OracleDriver" />
-->
<!--要连接的数据库-->
<param name="URL" value="jdbc:microsoft:sqlserver://192.168.0.120:1433;DatabaseName=test" />
<!--连接数据库的用户名-->
<param name="user" value="sa" />
<!--连接数据库的密码-->
<param name="password" value="sa" />
<!--向MSSQL数据库表LOG中插入数据的sql语句-->
<param name="sql" value=" INSERT INTO LOG(LOGDATE,LOGLEVEL,LOGCLASS,LOGLOGGER,LOGMESSAGE)
values('%d{yyyy-MM-dd HH:mm:ss}','%.50p', '%.50c','%.50l', '%.1000m')"/>
<!-- Oracle 的 insert 语句
<param name="sql" value=" insert into logrecord(id,packageid,userid,syscodeid,info,logtime,loglevel)
values(?,?,?,?,?,to_date('%d{yyyy-MM-dd HH:mm:ss}', 'yyyy-MM-dd HH24:mi:ss'),'%p')" />
-->
<!-- 过滤输出时Log内容,在这里,LevelMin是ERROR,LevelMax都FATAL,所以输出DEBUG级别到FATAL级别的LOG数据 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 输出通道"HTML",输出方式是:输出所有级别的LOG到数据库 -->
<appender name="HTML" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/html/htmllog.html" />
<param name="Append" value="true" />
<!-- 只输出定义的级别以上的LOG,因为在下面过滤LOG信息所以屏蔽 -->
<!-- param name="Threshold" value="info"/ -->
<param name="MaxFileSize" value="50KB"/>
<param name="MaxBackupIndex" value="2"/>
<!-- 好像现在只有固定输出格式 -->
<!-- 输出的HTML都缺少</table></body>等代码,log4j的Bug?我建议是不要使用 -->
<layout class="org.apache.log4j.HTMLLayout">
<param name="Title" value="TSD HP HTML LOG" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 设置域名限制,即com.tongshida域及以下的日志均输出到下面对应的通道中, 虽然下面<roo>的<priority value="ERROR">设置成ERROR,但com.tongshida下面的程序中的LOG要输出level="DEBUG"的 DEBUG级别以上的LOG-->
<!--给客户交货时要把它屏蔽-->
<logger name="com.tongshida">
<!-- 设置com.tongshida以下函数输出LOG的级别 -->
<level value="DEBUG"/>
<!-- 好像是指定输出通道,因为下面root里指定了所以这里屏蔽掉了
<appender-ref ref="DEBUG"/>
-->
</logger>
<root>
<!-- 设置输出范围,在这里光输出ERROR以上的,ERROR级别,FATAL级别的LOG -->
<priority value="ERROR"/>
<!-- 上边设置的输出通道,使用的在这里定义 -->
<appender-ref ref="STDOUT"/>
<appender-ref ref="DEBUG"/>
<appender-ref ref="INFO"/>
<appender-ref ref="WARN"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="FATAL"/>
<appender-ref ref="ALL"/>
<appender-ref ref="EVERYDAY"/>
<appender-ref ref="DATABASE"/>
<appender-ref ref="HTML"/>
</root>
</log4j:configuration>
6 Log4j在Java程序里的使用。
Logger log = Logger.getLogger(inputClass);
//输出到数据库时有"'"会出错所以把它换成全角
String outmessage = message.replaceAll("'", "’");
log.debug(outmessage);log.error(outmessage);log.warn(outmessage);
如想要动态输出LOG(更改输出目录和文件名),也就是强制改变读到内存中的[Log4j.xml]里的相应输出目录和文件名。鉴于篇幅没能写下。
7.MSSQL_log_table_Creater.sql
CREATE TABLE [LOG] (
ID INTEGER NOT NULL PRIMARY KEY,
LOGDATE DATETIME,
LOGTIME TIMESTAMP,
LOGTHREAD VARCHAR(50),
LOGLEVEL VARCHAR(50),
LOGCLASS VARCHAR(50),
LOGLOGGER VARCHAR(200),
LOGMESSAGE VARCHAR(2000)
)
程序运行时,往特定输出文件或数据库里输出程序信息,如:出错信息,运行记录,调试记录,等等。
日志(LOG)一般分为以下几种类型。
FATAL:系统错误(大错误)(程序被错误中断)
系统出现大错误时输出(程序无法处理的大错误,如硬件错误)
ERROR:异常(程序被错误中断)
程序运行时出现的错误(程序员可以捕获处理)
WARN :警告(程序不会中断)
程序不算出错,但以不推荐方式运行时输出。
INFO : 信息(程序不会中断)
程序中有意输出的信息,如程序运行信息,如“程序开始”“程序结束”等。
DEBUG: 调试记录(程序不会中断)
调试程序时,跟踪程序运行的输出信息。
2 Log4J的使用。
Log4J是为了输出日志的Java程序包,是Apached的一个子项目。
可在http://logging.apache.org 下载并免费使用。
可以把LOG输出到,控制台,文件,或数据库。
这个网址里有很多Log4程序包,他们分别是,
log4c -- ANSI C 版
log4E -- Eiffel 版
log::Log4perl -- Perl 版
log4net -- .NET 版
log4r -- Ruby 版
log4j -- Java版
3 Log4J的能输出LOG的优先级。
OFF 级别高,关闭所有LOG
FATAL不可预想的无法继续运行程序的场合,一般是写进syslog(系统日志),在应用程序中很难捕获。
ERROR出现异常,应用程序停止运行等,需要紧急对应的程度的错误。
WARN 警告,以不建议的方式运行。
INFO 信息,实际运行中最基本程度的信息,如,启动服务器,运行某某程序或方法,运行结束等。
DEBUG调试时输出的信息,有可能产生非常大量的LOG文件。
如为解决问题而设置输出断点LOG等。DEBUG调试时输出的信息,所以投入运行时一般关闭DEBUG级别的LOG。
tracever log4j的 1.2.12 新加入比DEBUG还小的断点。
ALL 级别低 打开所有LOG
4 Struts使用Log4J。
项目里的,[JavaSource]下做一个,log4j.xml或log4j.properties以后Struts就可以使用Log4J了,log4j.xml,log4j.properties是Log4J的设置文档。struts先读入log4j.xml,要是没有再读入log4j.properties。我认为log4j.xml更容易理解,而且可以做到赛选各种级别LOG后输出(log4j.properies无法赛选),所以只讲log4j.xml。
5 Log4j.xml设置方法。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<!-- org.apache.log4j.ConsoleAppender (输出到控制台),
org.apache.log4j.FileAppender (输出到文件),
org.apache.log4j.DailyRollingFileAppender(每天输出产生一个日志文件),
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件), 可通过 log4j.appender.R.MaxFileSize=100KB 设置文件 大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
-->
<!-- 输出通道"STDOUT",输出所有信息到控制台(也就是System.out.println()) -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<!--
org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
org.apache.log4j.PatternLayout (可以灵活地指定Log内容布局模式),
org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
-->
<!-- 输出自定义内容的LOG -->
<layout class="org.apache.log4j.PatternLayout">
<!--
%m 输出代码中指定的消息
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
%r 输出自应用启动到输出该 log 信息耗费的毫秒数
%c 输出打了Log的类名,%c{1}从类名开始输出一个,
例如com.tongshida.Action,{1}时只输出Action, {2}输出 tongshida.Action
%C 输出.Error()方法所在的类。
%M 输出生成LOG的类当中的方法名称
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符, Windows 平台为 “rn”,Unix 平台为 “n”
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在
其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似:
2002 年 10 月 18 日 22 : 10 : 28 , 921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
%[数值]p 输出的%p字符串长度小于[数值]时,补空格,默认右对齐,前加-号,左对齐,这里也可以是%m等别的
%.[数值]p输出的%p字符串长度大于[数值],后面切掉。
%[数值].[数值]p 就是综合上两行。
-->
<!-- 输出时Log内容的具体定义 -->
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
</appender>
<!-- 输出通道"DEBUG",输出方式是:只输出DEBUG级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
<!-- 输出Log文件的路径和文件名 -->
<param name="File" value="logs/debug/debug.log"/>
<!-- TOMCAT等WEB服务器重新启动时,是否插入到原有的LOG文件里,true 插入false 新建 -->
<param name="Append" value="true"/>
<!-- 只输出定义的级别以上的LOG,因为在下面过滤LOG信息所以屏蔽 -->
<!-- param name="Threshold" value="info"/ -->
<!-- 因选择了RollingFileAppender了才有下面两个 MaxFileSize,MaxBackupIndex 选项 -->
<!-- MaxFileSize是一个LOG文件的最大的文件大小,当LOG文件超过这个值时,自动转成 *.log.1的LOG文件 -->
<param name="MaxFileSize" value="500KB"/>
<!-- MaxBackupIndex生成自动转成 *.log.1的LOG文件的个数,设置3时最多生成3个LOG备份文件,它们是[*.log.1][*.log.2][*.log.3] -->
<param name="MaxBackupIndex" value="2"/>
<!-- 输出时Log内容的具体定义 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<!-- 过滤输出时Log内容,在这里,LevelMin,LevelMax都定义了DEBUG,所以只输出DEBUG级别LOG的数据 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 指定输出LOG内容的最低等级 -->
<param name="LevelMin" value="DEBUG"/>
<!-- 指定输出LOG内容的最高等级 -->
<param name="LevelMax" value="DEBUG"/>
</filter>
</appender>
<!-- 输出通道"INFO",输出方式是:只输出INFO级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="INFO" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/info/info.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO" />
</filter>
</appender>
<!-- 输出通道"WARN",输出方式是:只输出WARN级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="WARN" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/warn/warn.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="WARN"/>
<param name="LevelMax" value="WARN"/>
</filter>
</appender>
<!-- 输出通道"ERROR",输出方式是:只输出ERROR级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/error/error.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
<!-- 输出通道"FATAL",输出方式是:只输出INFO级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="FATAL" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/fatal/fatal.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="FATAL"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 输出通道"ALL",输出方式是:输出所有级别的LOG,并文件大小到达指定大小时产生新的Log文件 -->
<appender name="ALL" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/all/all.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 输出通道"EVERYDAY",输出方式是:输出所有级别的LOG,并每天一个日志文件 -->
<appender name="EVERYDAY" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="logs/ereryday/ereryday.log"/>
<param name="Append" value="true"/>
<!-- param name="Threshold" value="DEBUG"/ -->
<!-- 以日为单位输出LOG文件,每日输出一个LOG文件-->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<!-- 以时为单位输出LOG文件,每小时输出一个LOG文件
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
-->
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message -->
<param name="ConversionPattern"
value="[%d{yyyy-MM-dd HH:mm:ss,SSS}][%-20c{1}]★%-5p★%m%n"/>
<!-- The full pattern: Date MS Priority [Category] (Thread:NDC)
Message <param name="ConversionPattern"
value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
-->
</layout>
<!-- 过滤输出时Log内容,在这里,LevelMin是DEBUG,LevelMax都FATAL,所以输出DEBUG级别到FATAL级别的LOG数据 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 输出通道"DATABASE",输出方式是:输出所有级别的LOG到数据库 -->
<appender name="DATABASE" class="org.apache.log4j.jdbc.JDBCAppender">
<!--数据库的驱动,这里用的是MSSQL-->
<param name="driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
<!--这是Oracle用的驱动,在这里用MSSQL所以屏蔽掉了
<param name="driver" value="oracle.jdbc.driver.OracleDriver" />
-->
<!--要连接的数据库-->
<param name="URL" value="jdbc:microsoft:sqlserver://192.168.0.120:1433;DatabaseName=test" />
<!--连接数据库的用户名-->
<param name="user" value="sa" />
<!--连接数据库的密码-->
<param name="password" value="sa" />
<!--向MSSQL数据库表LOG中插入数据的sql语句-->
<param name="sql" value=" INSERT INTO LOG(LOGDATE,LOGLEVEL,LOGCLASS,LOGLOGGER,LOGMESSAGE)
values('%d{yyyy-MM-dd HH:mm:ss}','%.50p', '%.50c','%.50l', '%.1000m')"/>
<!-- Oracle 的 insert 语句
<param name="sql" value=" insert into logrecord(id,packageid,userid,syscodeid,info,logtime,loglevel)
values(?,?,?,?,?,to_date('%d{yyyy-MM-dd HH:mm:ss}', 'yyyy-MM-dd HH24:mi:ss'),'%p')" />
-->
<!-- 过滤输出时Log内容,在这里,LevelMin是ERROR,LevelMax都FATAL,所以输出DEBUG级别到FATAL级别的LOG数据 -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 输出通道"HTML",输出方式是:输出所有级别的LOG到数据库 -->
<appender name="HTML" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/html/htmllog.html" />
<param name="Append" value="true" />
<!-- 只输出定义的级别以上的LOG,因为在下面过滤LOG信息所以屏蔽 -->
<!-- param name="Threshold" value="info"/ -->
<param name="MaxFileSize" value="50KB"/>
<param name="MaxBackupIndex" value="2"/>
<!-- 好像现在只有固定输出格式 -->
<!-- 输出的HTML都缺少</table></body>等代码,log4j的Bug?我建议是不要使用 -->
<layout class="org.apache.log4j.HTMLLayout">
<param name="Title" value="TSD HP HTML LOG" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="FATAL"/>
</filter>
</appender>
<!-- 设置域名限制,即com.tongshida域及以下的日志均输出到下面对应的通道中, 虽然下面<roo>的<priority value="ERROR">设置成ERROR,但com.tongshida下面的程序中的LOG要输出level="DEBUG"的 DEBUG级别以上的LOG-->
<!--给客户交货时要把它屏蔽-->
<logger name="com.tongshida">
<!-- 设置com.tongshida以下函数输出LOG的级别 -->
<level value="DEBUG"/>
<!-- 好像是指定输出通道,因为下面root里指定了所以这里屏蔽掉了
<appender-ref ref="DEBUG"/>
-->
</logger>
<root>
<!-- 设置输出范围,在这里光输出ERROR以上的,ERROR级别,FATAL级别的LOG -->
<priority value="ERROR"/>
<!-- 上边设置的输出通道,使用的在这里定义 -->
<appender-ref ref="STDOUT"/>
<appender-ref ref="DEBUG"/>
<appender-ref ref="INFO"/>
<appender-ref ref="WARN"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="FATAL"/>
<appender-ref ref="ALL"/>
<appender-ref ref="EVERYDAY"/>
<appender-ref ref="DATABASE"/>
<appender-ref ref="HTML"/>
</root>
</log4j:configuration>
6 Log4j在Java程序里的使用。
Logger log = Logger.getLogger(inputClass);
//输出到数据库时有"'"会出错所以把它换成全角
String outmessage = message.replaceAll("'", "’");
log.debug(outmessage);log.error(outmessage);log.warn(outmessage);
如想要动态输出LOG(更改输出目录和文件名),也就是强制改变读到内存中的[Log4j.xml]里的相应输出目录和文件名。鉴于篇幅没能写下。
7.MSSQL_log_table_Creater.sql
CREATE TABLE [LOG] (
ID INTEGER NOT NULL PRIMARY KEY,
LOGDATE DATETIME,
LOGTIME TIMESTAMP,
LOGTHREAD VARCHAR(50),
LOGLEVEL VARCHAR(50),
LOGCLASS VARCHAR(50),
LOGLOGGER VARCHAR(200),
LOGMESSAGE VARCHAR(2000)
)
发表评论
-
log4j:WARN No appenders could be found for logger 解决方案
2018-06-07 16:55 1092log4j:WARN No appenders could b ... -
SLF4J: Failed to load class的问题及解决
2017-07-31 14:06 1281from http://blog.csdn.net/th ... -
Log4j配置详解之log4j.xml
2016-09-20 18:57 778一、log4j.jar包下载地址:http://loggin ... -
Log4j日志级别
2016-09-20 18:48 472日志记录器(Logger)是日志处理的核心组件。 ... -
Log4j配置模板
2016-09-20 18:44 480LOG4J的配置之简单使它遍及于越来越多的应用中了:Log ... -
Log4j配置详解2之log4j.properties
2016-09-20 17:57 908官网:http://logging.apache.org/l ... -
Log4j配置详解1之log4j.properties
2016-09-20 09:25 456Log4J的配置文件(Configuration File ...
相关推荐
标题《Log4j配置详解高清版》意味着本文将全面而深入地讲解Log4j的配置方法。Log4j是一个流行的日志框架,被广泛应用于Java应用程序中,用于记录日志信息,便于问题的调试与分析。描述说明文档内容清晰,适合下载...
log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn". 系统选择配置文件的优先级(从先到后)如下: (1).classpath下的名为log4j2-test.json...
Log4j 在 SSM 整合中的配置详解 Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM...
要在项目中使用Log4j,首先需要将`log4j.jar`添加到项目的类路径中,然后创建或引用`log4j.xml`配置文件。在代码中,通过以下方式创建和使用Logger: ```java import org.apache.log4j.Logger; public class ...
### Log4j配置详解 #### 一、Log4j简介 Log4j是Apache的一个开源项目,用于实现灵活的日志管理。它允许开发者通过简单的配置文件来控制日志的输出等级、输出目的地以及日志信息的格式化方式。Log4j支持多种配置...
2. **配置文件**:创建`log4j2.xml`或`log4j2.json`文件,定义日志级别和输出目的地。例如: ```xml <!-- log4j2.xml 示例 --> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n...
### Log4j配置详解 #### 一、Log4j配置文件概述 Log4j是一款流行的Java日志框架,被广泛应用于各种规模的应用程序中。它的配置文件(Configuration File)主要用于设置记录器(Logger)的级别、存放器(Appender)...
### Log4j.properties配置详解 #### 一、Log4j简介 Log4j是一个非常流行的Java日志框架,它能够帮助开发者轻松管理日志记录。Log4j的主要优点包括灵活性高、性能好以及易于配置。它由三个核心组件组成:记录器...
Log4j 配置文件说明 ...Log4j 配置文件是 Log4j 的核心组件之一,通过配置文件可以控制日志记录的级别、输出目的地和格式。了解 Log4j 配置文件的基本结构和配置方法,可以更好地使用 Log4j 实现日志记录和管理。
### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...
### log4j.properties配置详解与使用教程 #### 一、log4j简介 log4j是Apache的一个开源项目,用于实现日志功能。它提供了一种简单的方式来管理和配置应用程序的日志输出,支持多种输出目的地(如控制台、文件等)...
### Log4j 配置详解 #### 一、概述 Log4j 是一款非常流行的 Java 日志框架,它提供了一种灵活的日志记录机制。在实际应用中,开发者可以通过简单的配置来实现对日志级别的控制、日志信息的格式化以及日志文件的...
### log4j常用配置详解 ### #### 一、log4j.properties 配置解析 #### 在Java开发领域中,log4j是一款非常流行的日志框架,它提供了丰富的配置选项来满足不同场景下的日志记录需求。本文将详细介绍两种常见的log4j...
### Log4j配置与加载方法详解 Log4j是一款由Apache出品的日志记录工具,它提供了灵活的日志级别控制和多样化的日志输出方式,广泛应用于Java应用的开发中。本文将深入解析log4j的配置与加载机制,帮助开发者更好地...
《Log4j配置详解》 在Java开发中,日志记录是不可或缺的一部分,它帮助开发者追踪程序运行状态,定位问题,以及进行性能分析。Log4j作为一款强大的日志框架,因其灵活性和可配置性而备受青睐。本文将深入探讨Log4j...
### Tomcat 下的 Log4j 日志配置详解 在日常的 Web 开发中,日志记录对于调试问题、监控系统状态以及后期维护来说至关重要。在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发...
目录 ...................... 1. Log4j 简介 ........... 2. 下载与使用.............4.2 XML 配置文件详解 .... 4.3 properties 比较详细的例子 4.4 在代码中使用 Log4j .. 4.5 注意事项 . 5. Properties 文件实例说明
Log4j 的配置主要通过 `log4j.properties` 或 `log4j.xml` 文件完成,这里我们以 `log4j.properties` 文件为例进行说明。 1. **配置Appender** - **Console Appender**:将日志输出到控制台。 ```properties log...
2. 配置灵活性:通过log4j.properties或log4j.xml配置文件,开发者可以定制日志输出的目标、格式、过滤器等。1.2.16版本优化了配置语法,使其更加易读和易用。 3. 多输出目的地:除了常见的控制台和文件,Log4j ...
### Log4j配置详解 #### 一、Log4j简介 Log4j 是一款非常流行的 Java 日志框架,由 Apache 软件基金会所提供。它能够帮助开发者在应用程序中记录日志信息,使得应用程序能够在运行时更加透明地展示其内部状态。Log...