我们小组在测试环境调试的时候啊,大家互相的log4j控制台输出信息都很多!不太方便各自观察!
能否每个人都只看到自己输出的调试信息啊? 我查了一下好像说可以按包设置。可是log4j一共就6个级别。那最多也只能6个人约定好一人用一个级别?
这样开发人员A调试A包的同时,开发人员B调试B包,控制台也会出现A,B分别级别的输出信息啊!还不是一样互相冲啊!
只不过输出信息的前缀有的是debug 有的是 error好分辨一些而已.还是治标不治本啊!不知道大家有没有什么好的方法
还是我的理解有问题啊?
怎么能做到:每个人都只看到自己输出的调试信息啊?
能否每个人都只看到自己输出的调试信息啊? 我查了一下好像说可以按包设置。可是log4j一共就6个级别。那最多也只能6个人约定好一人用一个级别?
这样开发人员A调试A包的同时,开发人员B调试B包,控制台也会出现A,B分别级别的输出信息啊!还不是一样互相冲啊!
只不过输出信息的前缀有的是debug 有的是 error好分辨一些而已.还是治标不治本啊!不知道大家有没有什么好的方法
还是我的理解有问题啊?
怎么能做到:每个人都只看到自己输出的调试信息啊?
a. %m 输出代码中的指定消息
b. %p 输出优先级, 即DEBUG, INFO, WARN, ERROR, FATAL
c. %r 输出自应用启动到输出该log信息耗费的毫秒数
d. %c 输出所属的类目, 通常就是所在类的全名
e. %t 输出产生该日志时间的线程名
f. %n 输出一个回车换行符, windows平台为”\r\n”, unix为”\n”
g. %d 输出日志时间点的日期或时间, 默认格式为ISO8601, 也可以在其后指定格式, 比如%d{yyyy MM dd HH:mm:ss, SSS}
h. %1 输出日志时间的发生位置, 包括类目名, 发生的线程, 以及在代码中的行数.
==============================
Log log = LogFactory.getLog( "com.discursive.jccook.SomeApp" ); if( log.isTraceEnabled( ) ) {
log.trace( "This is a trace message" );
}
common-loggin我觉得没有log4j好用啊.自己在那里面写来写去的,楼下的可以提供下直接用common-logging和使用log4j的优劣吗?
可是程序如何知道这一行是A写的呢?正常情况下靠Log4j是做不到这种需求的,除非你们在不同的工程下开发,那还可以每个工程配置一个监听器。否则只能想别的办法比如每个人写Log时候加上自己的签名,比如A写的就以A-开头
然后自己写一个文件内容过滤程序,保留各自匹配签名的Log内容仅仅提供一个思路而已
那么可以在加上取log4j的时候加上自己的标识符, 如:
public final static Logger log4j = Logger.getLogger("老张的LOG");
public static void configureRootCategory(int workon) {
String appenderName = null;
synchronized (Logger.class) {
String path = "";
if (workon == 1) {
appenderName = "Logger1";
} else if (workon == 2) {
appenderName = "Logger2";
} URL url = Logger.class.getResource("log4j.properties");
if (url == null) {
url = Logger.class.getResource("/log4j.properties");
}
if (url == null) {
System.err.println(Logger.class.getName() + ":"
+ MESS_FAIL_READ_PROPERTY);
} else {
PropertyConfigurator.configure(url);
}
List list = getRootCategoryNames();
for (Iterator it = list.iterator(); it.hasNext();) {
String aRootCategory = (String) it.next();
if (!(appenderName.equals(aRootCategory))) {
removeAppenderFromRootCategory(aRootCategory);
}
}
}
}然后:
static {
configureRootCategory(WORK_ON_BATCH);//WORK_ON_BATCH从配置在一个属性文.
}Log4j.propertis中:
log4j.rootCategory=DEBUG, Logger1, Logger2log4j.appender.Logger1 =org.apache.log4j.RollingFileAppender
log4j.appender.Logger1.File=/Log/Logger1.log
log4j.appender.Logger1.MaxFileSize=20MB
log4j.appender.Logger1.MaxBackupIndex=100
log4j.appender.Logger1.layout=org.apache.log4j.PatternLayout
log4j.appender.Logger1.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} %-5p [%t] %m (%c{3}%x)%n
log4j.additivity.Logger1 =falselog4j.appender.Logger2 =org.apache.log4j.RollingFileAppender
log4j.appender.Logger2.File=/Log/Logger2.log
log4j.appender.Logger2.MaxFileSize=20MB
log4j.appender.Logger2.MaxBackupIndex=100
log4j.appender.Logger2.layout=org.apache.log4j.PatternLayout
log4j.appender.Logger2.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} %-5p [%t] %m (%c{3}%x)%n
log4j.additivity.Logger2=false
只不过输出信息的前缀有的是debug 有的是 error好分辨一些而已.还是治标不治本啊!不知道大家有没有什么好的方法
还是我的理解有问题啊?
怎么能做到:每个人都只看到自己输出的调试信息啊?
只不过输出信息的前缀有的是debug 有的是 error好分辨一些而已.还是治标不治本啊!不知道大家有没有什么好的方法
还是我的理解有问题啊?
怎么能做到:每个人都只看到自己输出的调试信息啊?
只不过输出信息的前缀有的是debug 有的是 error好分辨一些而已.还是治标不治本啊!不知道大家有没有什么好的方法
还是我的理解有问题啊?
怎么能做到:每个人都只看到自己输出的调试信息啊?
在你的logger class中写一个这样的方法:
public static void configureRootCategory(int workon) {
String appenderName = null;
synchronized (Logger.class) {
String path = "";
if (workon == 1) {
appenderName = "Logger1";
} else if (workon == 2) {
appenderName = "Logger2";
} URL url = Logger.class.getResource("log4j.properties");
if (url == null) {
url = Logger.class.getResource("/log4j.properties");
}
if (url == null) {
System.err.println(Logger.class.getName() + ":"
+ MESS_FAIL_READ_PROPERTY);
} else {
PropertyConfigurator.configure(url);
}
List list = getRootCategoryNames();
for (Iterator it = list.iterator(); it.hasNext();) {
String aRootCategory = (String) it.next();
if (!(appenderName.equals(aRootCategory))) {
removeAppenderFromRootCategory(aRootCategory);
}
}
}
} 然后:
static {
configureRootCategory(WORK_ON_BATCH);//WORK_ON_BATCH从配置在一个属性文.
} Log4j.propertis中:
log4j.rootCategory=DEBUG, Logger1, Logger2 log4j.appender.Logger1 =org.apache.log4j.RollingFileAppender
log4j.appender.Logger1.File=/Log/Logger1.log
log4j.appender.Logger1.MaxFileSize=20MB
log4j.appender.Logger1.MaxBackupIndex=100
log4j.appender.Logger1.layout=org.apache.log4j.PatternLayout
log4j.appender.Logger1.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} %-5p [%t] %m (%c{3}%x)%n
log4j.additivity.Logger1 =false log4j.appender.Logger2 =org.apache.log4j.RollingFileAppender
log4j.appender.Logger2.File=/Log/Logger2.log
log4j.appender.Logger2.MaxFileSize=20MB
log4j.appender.Logger2.MaxBackupIndex=100
log4j.appender.Logger2.layout=org.apache.log4j.PatternLayout
log4j.appender.Logger2.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} %-5p [%t] %m (%c{3}%x)%n
log4j.additivity.Logger2=false 能给出一个具体例子吗?分都给你啊!谢谢你啊