下载必备的jar
http://yunpan.cn/ccJEq3IQuEhA4 访问密码 a98f
log4j-core-2.3.jar
log4j-api-2.3.jar
先在src下面创建log4j.xml 配置信息如下:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!
DOCTYPE
log4j:configuration
SYSTEM
"log4j.dtd"
>
<
log4j:configuration
xmlns:log4j
=
'http://jakarta.apache.org/log4j/'
>
<!-- 控制台输出 -->
<
appender
name
=
"config_Console"
class
=
"org.apache.log4j.ConsoleAppender"
>
<
layout
class
=
"org.apache.log4j.PatternLayout"
>
<
param
name
=
"ConversionPattern"
value
=
"[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %m%n"
/>
</
layout
>
<!--过滤器设置输出的级别 -->
<
filter
class
=
"org.apache.log4j.varia.LevelRangeFilter"
>
<
param
name
=
"levelMin"
value
=
"DEBUG"
/>
<!-- 最低级别 -->
<
param
name
=
"levelMax"
value
=
"ERROR"
/>
<!-- 最高级别 -->
<
param
name
=
"AcceptOnMatch"
value
=
"true"
/>
</
filter
>
</
appender
>
<!-- 原有文件基础追加日志 -->
<
appender
name
=
"runLog"
class
=
"org.apache.log4j.RollingFileAppender"
>
<
param
name
=
"File"
value
=
"${catalina.base}/logs/log/server-log.html"
/>
<!-- 设置日志输出文件名 -->
<
param
name
=
"Append"
value
=
"true"
/>
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<
param
name
=
"MaxBackupIndex"
value
=
"10"
/>
<
layout
class
=
"org.apache.log4j.HTMLLayout"
>
<
param
name
=
"ConversionPattern"
value
=
"%p (%c:%L)- %m%n"
/>
</
layout
>
</
appender
>
<!-- 每天产生一个日志 -->
<
appender
name
=
"activexAppender"
class
=
"com.ismartinfo.ilife.api.dic.MyDailyRollingFileAppender"
>
<
param
name
=
"File"
value
=
"${catalina.base}/logs/log/"
/>
<
param
name
=
"Append"
value
=
"true"
/>
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<
param
name
=
"DatePattern"
value
=
"'.'yyyy-MM-dd"
/>
<
layout
class
=
"org.apache.log4j.HTMLLayout"
>
<
param
name
=
"ConversionPattern"
value
=
"[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n"
/>
</
layout
>
</
appender
>
<!-- 指定logger的设置,additivity指示是否遵循缺省的继承机制-->
<
logger
name
=
"com.runway.bssp.activeXdemo"
additivity
=
"false"
>
<
priority
value
=
"info"
/>
<
appender-ref
ref
=
"activexAppender"
/>
</
logger
>
<!-- 根logger的设置-->
<
root
>
<
priority
value
=
"info"
/>
<!-- WEB容器启动处理最低级别处理 -->
<
appender-ref
ref
=
"config_Console"
/>
<!--引用控制台输出-->
<
appender-ref
ref
=
"activexAppender"
/>
<!--引用-->
</
root
>
</
log4j:configuration
>
初始配置 web.xml
<!-- log4j配置 -->
<
context-param
>
<
param-name
>
log4jConfigLocation
</
param-name
>
<
param-value
>
classpath:log4j.xml
</
param-value
>
</
context-param
>
log4j建议只使用五个级别,级别顺序(由低到高): DEBUG < INFO < WARN < ERROR < FATAL
代码引用:
private
static
Logger
logger
= LogManager. getLogger(TimerDicM.
class
+
"词典更新错误,时间"
+StringUtils.getStrDate(
new
Date()));
try {int a=1/0;/*String content=getContent();//写入的文件内容FileWriter writer = null;String pathStr = this.getClass().getClassLoader().getResource("").getPath();// 对 Windows 下获取 物理路径 做 特殊处理if ("\\".equals(File.separator)) {pathStr = pathStr.substring(1).replaceAll("/", "\\\\");}File file = new File(pathStr + File.separatorChar + fileName);writer = new FileWriter(file.getPath(), true);writer.write(content);writer.close();*/} catch (Exception e) {logger .debug( "debug错误出现" );logger .error( "写入文件时产生了错误,错误信息:" +e.getMessage()); //error级别的信息,参数就是你输出的信息// TODO : handle exceptione.printStackTrace();}
年月生成文件夹,以年月日来命名文件
package
com.ismartinfo.ilife.api.dic;
import
java.io.File;
import
java.util.Calendar;
import
java.util.Date;
import
org.apache.log4j.DailyRollingFileAppender;
import
com.ismartinfo.ilife.api.util.StringUtils;
/**
* 集成 DailyRollingFileAppender 重写file 设置路径
*
@author
张亮( witt)
* 人生苦短
*2015
-
7
-
10
*/
public
class
MyDailyRollingFileAppender
extends
DailyRollingFileAppender {
/**
* 自动创建文件夹
*/
@Override
public
void
setFile(String file) {
Calendar cal=Calendar. getInstance();
int
year=cal.get(Calendar.
YEAR
);
//得到年
int
month=cal.get(Calendar.
MONTH
)+1;
//得到月,因为从0开始的,所以要加1
String filePath = file+year+
"/"
+month+
"/"
+
" "
;
File fileCheck =
new
File(filePath);
if
(!fileCheck.exists())
fileCheck.getParentFile().mkdirs();
String timePath=filePath+StringUtils. getStrDate(
new
Date())+
"_log.html"
;
super
.setFile(timePath);
}
}