??xml version="1.0" encoding="utf-8" standalone="yes"?>在线中文字幕视频,波多野结衣在线观看一区二区三区 ,精品福利网址导航http://www.aygfsteel.com/aldreamlau/category/27236.htmlmezh-cnMon, 12 Nov 2007 22:53:25 GMTMon, 12 Nov 2007 22:53:25 GMT60嵌套诊断环境NDC http://www.aygfsteel.com/aldreamlau/articles/159731.htmlaldreamaldreamSun, 11 Nov 2007 06:51:00 GMThttp://www.aygfsteel.com/aldreamlau/articles/159731.htmlhttp://www.aygfsteel.com/aldreamlau/comments/159731.htmlhttp://www.aygfsteel.com/aldreamlau/articles/159731.html#Feedback0http://www.aygfsteel.com/aldreamlau/comments/commentRss/159731.htmlhttp://www.aygfsteel.com/aldreamlau/services/trackbacks/159731.html? 多用户ƈ发的环境下,通常是由不同的线E分别处理不同的客户端请求。此时要在日志信息中区分Z同的客户端,你可以ؓ每一个线E生成一个LoggerQ从 而从一堆日志信息中区分出哪些信息是属于哪个U程的,但这U方式ƈ不高效。Log4J巧妙C用了Neil Harrison提出?#8220;NDCQ嵌套诊断环境)”机制来解册个问题。Log4J为同一cd的线E生成一个LoggerQ多个线E共享用,而它仅在? 志信息中d能够区分不同U程的信息。NDC是什么?举例来说Q如果一个Servlet接到q发hӞ为每一个客L创徏一个新的线E,然后分配一个用 于保存该h上下文的NDC堆栈。该上下文可能是发出h的主机名、IP地址或其它Q何可以用于标识该h的信息。这P׃不同的客L处理U程h? 同的NDC堆栈Q即使这个Servlet同时生成多个U程处理不同的请求,q些日志信息仍然可以区分出来Q就好像Log4J为每一个线E都单独生成了一? Logger实例一栗在Log4J中是通过org.apache.log4j.NDC实现q种机制的。用NDC的方法也很简单,步骤如下Q?

1. 在进入一个环境时调用NDC.push(String)Q然后创Z个NDCQ?

2. 所做的日志操作输出中包括了NDC的信息;

3. d该环境时调用NDC.popҎQ?

4. 当从一个线E中退出时调用NDC.removeҎQ以侉K放资源?

下面是一个模拟记录来自不同客Lh事g的例子,代码如下Q?br />
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
public class TestNDC {
 
static Logger log = Logger.getLogger(TestNDC.class.getName());
 
public static void main(String[] args) {
  log.info(
"Make sure %x is in your layout pattern!");
  
// 从客L获得IP地址的例?/span>
  String[] ips = {"192.168.0.10","192.168.0.27"};
  
for (int i = 0; i<ips.length ; i++)  // 模拟一个运行方?/span>
  {
   
// IP放进 NDC?/span>
   NDC.push(ips[i]);
   log.info(
"A NEW client connected, who's ip should appear in this log message.");
   NDC.pop();
  }
  NDC.remove();
  log.info(
"Finished.");
 }
}
注意配置文g中的布局格式中一定要加上%x。系l输出如下:
INFO   - Make sure %x is in your layout pattern!
INFO  
192.168.0.10 - A NEW client connected, who's ip should appear in this log message.
INFO  
192.168.0.27 - A NEW client connected, who's ip should appear in this log message.
INFO   
- Finished.



aldream 2007-11-11 14:51 发表评论
]]>
Log4j优化http://www.aygfsteel.com/aldreamlau/articles/159642.htmlaldreamaldreamSat, 10 Nov 2007 15:31:00 GMThttp://www.aygfsteel.com/aldreamlau/articles/159642.htmlhttp://www.aygfsteel.com/aldreamlau/comments/159642.htmlhttp://www.aygfsteel.com/aldreamlau/articles/159642.html#Feedback0http://www.aygfsteel.com/aldreamlau/comments/commentRss/159642.htmlhttp://www.aygfsteel.com/aldreamlau/services/trackbacks/159642.html 用户应该注意随后的优化徏议?br /> 9.1 日志为禁用时Q日志的优化
当日志被d的关闭,一个日志请求的p{于一个方法的调用加上整数的比较时间?br /> ?33mhz的Pentium II 机器上这个花贚w常?-50U秒之间?br /> 然而,Ҏ调用包括参数构徏的隐藏花贏V?br /> 例如Q对于logger catQ?br />
logger.debug("Entry number: " + i + " is " + String.valueOf(entry));
引v了构Z息参数的pQ例如,转化整数i和entryC个stringQƈ且连接中间字W串Q不信息是否被输出。这个参数的构徏p可能是很高,它主要决定于被调用的参数的大?br /> 避免参数构徏的花费应如下Q?br />
if(logger.isDebugEnabled() {
logger.debug(
"Entry number: " + i + " is " + String.valueOf(entry[i]));
}

如果logger的debug被关闭这不会招致参数构建的p。另一斚wQ如果logger是debug的话Q它生两ơ判?logger是否能用的花贏V一ơ是在debugenabledQ一ơ是debug。这是无关紧要的Q因为判断日志是否可用只占日志实际花Ҏ间的U?%?br /> 在Log4j里,日志h在Logger cȝ实例里。Logger 是一个类Q而不是一个接口。这大量的减了在方法调用上的弹性化的花贏V?br /> 当然用户采用预处理或~译旉技术去~译出所有的日志声明。这导致完的执行成效?br /> 然而因Zq制应用E序不包括Q何的日志声明的结果,日志不可能对那个二进制程序开启。以我的观点Q以q种较大的代h换取较小的性能优化是不值得的?br /> 9.2 当日志状态ؓ启用Ӟ日志的优?/strong>
q是本质上的优化logger的层ơ。当日志状态ؓ开QLog4j依然需要比较请求的U别与logger的别。然而,logger可能没有被安排一个别;它们从它们的fatherl承。这P在承之前,logger可能需要搜索它的祖先?br /> q里有一个认真的努力使层ơ的搜烦可能的快。例如,子logger仅仅q接到它的存在的father logger?br /> 在先前展C的BasicConfigurator 例子中,名ؓcom.foo.bar 的logger是连接到根loggerQ因此绕q了不存在的logger com和com.foo。这显著的改善执行的速度Q特别是解析logger的层l构时?br /> 典型的层ơ结构的解析的花Ҏloggerd关闭时的三倍?br /> 9.3 日志信息的输出时Q日志的优化
q是主要p在日志输出的格式化和发送它到它的输出源上。这里我们再一ơ的付出努力以格式化执行的可能快。同appender一栗实际上典型的花费大U是100-300毫秒?br /> 详情看org.apache.log4.performance.Logging?br /> 虽然Log4j有许多特点,但是它的W一个设计目标还是速度。一些Log4j的组件已l被重写q很多次以改善性能。不q,投稿者经常提Z新的优化。你应该满意的知道,以SimpleLayout的配|执行测试已l展CZLog4j的输出同System.out.println一样快?br />

aldream 2007-11-10 23:31 发表评论
]]>
Log4j配置文ghttp://www.aygfsteel.com/aldreamlau/articles/159483.htmlaldreamaldreamFri, 09 Nov 2007 16:43:00 GMThttp://www.aygfsteel.com/aldreamlau/articles/159483.htmlhttp://www.aygfsteel.com/aldreamlau/comments/159483.htmlhttp://www.aygfsteel.com/aldreamlau/articles/159483.html#Feedback0http://www.aygfsteel.com/aldreamlau/comments/commentRss/159483.htmlhttp://www.aygfsteel.com/aldreamlau/services/trackbacks/159483.html下面的Log4J配置文g实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签{全套功能?/span>
 1log4j.rootLogger=DEBUG,CONSOLE,A1,im
 2log4j.addivity.org.apache=true
 3# 应用于控制台
 4log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 5log4j.appender.Threshold=DEBUG
 6log4j.appender.CONSOLE.Target=System.out
 7log4j.appender.CONSOLE.Encoding=GBK
 8log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 9log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
10#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
11#应用于文?br /> 12log4j.appender.FILE=org.apache.log4j.FileAppender
13log4j.appender.FILE.File=file.log
14log4j.appender.FILE.Append=false
15log4j.appender.FILE.Encoding=GBK
16log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
17log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
18# Use this layout for LogFactor 5 analysis
19# 应用于文件回?br /> 20log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
21log4j.appender.ROLLING_FILE.Threshold=ERROR
22log4j.appender.ROLLING_FILE.File=rolling.log
23log4j.appender.ROLLING_FILE.Append=true
24log4j.appender.CONSOLE_FILE.Encoding=GBK
25log4j.appender.ROLLING_FILE.MaxFileSize=10KB
26log4j.appender.ROLLING_FILE.MaxBackupIndex=1
27log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
28log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
29#应用于socket
30log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
31log4j.appender.SOCKET.RemoteHost=localhost
32log4j.appender.SOCKET.Port=5001
33log4j.appender.SOCKET.LocationInfo=true
34# Set up for Log Facter 5
35log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
36log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
37# Log Factor 5 Appender
38log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
39log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
40# 发送日志给邮g
41log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
42log4j.appender.MAIL.Threshold=FATAL
43log4j.appender.MAIL.BufferSize=10
44log4j.appender.MAIL.From=web@www.wuset.com
45log4j.appender.MAIL.SMTPHost=www.wusetu.com
46log4j.appender.MAIL.Subject=Log4J Message
47log4j.appender.MAIL.To=web@www.wusetu.com
48log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
49log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
50# 用于数据?br /> 51log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
52log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
53log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
54log4j.appender.DATABASE.user=root
55log4j.appender.DATABASE.password=
56log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
57log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
58log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
59# 每天新徏日志
60log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
61log4j.appender.A1.File=log
62log4j.appender.A1.Encoding=GBK
63log4j.appender.A1.DatePattern='.'yyyy-MM-dd
64log4j.appender.A1.layout=org.apache.log4j.PatternLayout
65log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n
66#自定义Appender
67log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
68log4j.appender.im.host = mail.cybercorlin.net
69log4j.appender.im.username = username
70log4j.appender.im.password = password
71log4j.appender.im.recipient = corlin@cybercorlin.net
72log4j.appender.im.layout=org.apache.log4j.PatternLayout
73log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n


aldream 2007-11-10 00:43 发表评论
]]>
վ֩ģ壺 | | ˮ| | | ˮ| | | | ɽ| | | ӳ| Դ| | Ʊ| ʲ| ɽ| ¹| ̨| Ρɽ| | ݰ| | | | ̨| | ͺ| ƽ| | Դ| | | | ǿ| | | | ޭ| ٸ|