sinboy的菜地

一份耕耘,一份收获

张新波ID:sinboy
83815次访问,排名1116好友4人,关注者26
sinboy的文章
原创 49 篇
翻译 0 篇
转载 2 篇
评论 106 篇
sinboy的公告

喜欢中文分词技术的朋友请入http://groups.google.com/group/ictclas

最近评论
yuzishui:呵呵,都是要源码的。
谢谢您的知识.
也希望您能坚持下去.
支持.
周梁:怎么就这两句话?赶紧加强啊。
xazl.ia.ac.cn@gmail.com
周梁:我刚开始看,这里我觉得楼主可能没有理解,
作者的原意是为了防止权重相同的节点,<判断就是和=判断区别开,如果出现=,i就不会增加,继续会在这个权重下面进行插入父节点。呵呵。
可以参考他的论文一段话:

如果两条或两条以上路径长度相等,那么他们的长度并列第i,都要列入粗分结果集,而且不影响其他路径的排列序号,最后的粗分结果集合大小大于或等于N。
houlc:我的邮箱是houlc@foxmail.com
houlc:你能发给我一份吗,我也想在项目中使用log4j,想参考参考你是怎么用的.
文章分类
收藏
    相册
    IO
    TPTP
    友情链接
    DanceFire的BLOG
    Justin的BLOG
    Martin Fowler
    博客园设计模式
    吕震宇的BLOG
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 用Log4j自动生成日志收藏

    新一篇: Ant实战 | 旧一篇: ICTCLAS分词系统研究(三)--原子切分

             Log4j是Apache基金会的一个项目,它能为Java开发着提供功能强大使用方便的各种日志处理.当然它的版本不限于Java,还有C/C++等主流语言.我觉得它就象一把非常实用的锋利小刀,让我们的写程序时更加如鱼得水.

             Log4j输出的信息分如下几类:ALL,DEBUG,INFO,ERROR,FATAL,级别从低到高,输出的内容是从多到少.从字面意思即可看出大概,ALL指输出所有信息;DEBUG指调试信息;INFO指一般信息;ERROR指错误信息;FATAL指致命的错误信息。

           输出的信息级别和内容我们可以在程序里面设置,但缺点就不够灵活,并且无法在程序运行期间进行参数调整。通过XML或Property配置文件可以在外部控制Logger的输出,原理都一样的,只是表现形式不一样,看个人的习惯了。下面主要讲一下如何使用Property文件来灵活配置Log4j的输出。

           在Log4j中你可以让信息输出到控制台(Console)、文件、远程数据数等中的其中一个或多个当中。 

          首先我们要先声明信息输出的级别,并且 为了能把信息输出到指定的目的地,我们要指定输出方案,如下所示:

        log4j.rootLogger = DEBUG, A1,A4

       DEBUG为输出信息的级别,A1,A4分别为输出方案的名称,下面我们来定义方案的具体参数。

        指定该输出方案的信息输出目的地为控制台:

         log4j.appender.A1 = org.apache.log4j.ConsoleAppender

         设定输出的布局为模式布局:
         log4j.appender.A1.layout = org.apache.log4j.PatternLayout

        指定模式的具体参数:
        log4j.appender.A1.layout.ConversionPattern =[%d{HH:mm:ss}] [%t] %-5p - %m %n

        每个参数前要加%来说明,其中:

        %d:日期(date),如:yyyy-MM-dd,yyyy-MM-dd HH:mm:ss等

        %t:线程名称(Thread)

         %-5p:信息优先级(Priority),宽度为5,左对齐。如DEBUG,FATAL等

          %m:输出信息(Message)

          %n:回车换行

           还有其它几个象%c,%C,%F等

         上面的方案A1指的是把信息输出到控制台,并且输出的格式按指定的格式输出。

          我们还可以指定把信息输出到文件当中,如下为普通文件输出方案:

         log4j.appender.A2 = org.apache.log4j.RollingFileAppender
         log4j.appender.A2.File = logs\\test.log
         log4j.appender.A2.MaxFileSize = 1MB
         log4j.appender.A2.MaxBackupIndex = 3
         log4j.appender.A2.layout = org.apache.log4j.PatternLayout
         log4j.appender.A2.layout.ConversionPattern =[%d] %-4r [%t] %-5p %c %x - %m %n

         输出指定的文件test.log当中,并且指定该文件最大不超过1MB,超过之后将清除后再写入。当然也可以直接用FileAppender,不进行Rolling,那么所以的日志信息都将追加到原信息的后面。MaxBackupIndex指的是最大备份数目。以上面文件为例,当test.log到达1MB,则它直接被修改成test.log.1,如果这个文件已存在,则修改为test.log.2,直到MaxBackupIndex。新的日志信息,将重新生成文件test.log。当下一次达到1MB时,此时test.log.1,test.log.2,test.log.3都已存在,则直接把test.log.3删除,把test.log修改成test.log.3。

          把信息输出到远程数据库当中:

         # 定义A3输出到数据库
         log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender
         log4j.appender.A3.BufferSize = 40
         log4j.appender.A3.Driver = sun.jdbc.odbc.JdbcOdbcDriver
         log4j.appender.A3.URL = jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=MobileDB.mdb
         log4j.appender.A3.User = 
         log4j.appender.A3.Password = 
         log4j.appender.A3.layout = org.apache.log4j.PatternLayout
         log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j(createDate, thread, priority, category, message) values('%d', '%t', '%-5p', '%c', '%m')

         指定输出方案为JDBCAppender,即能过JDBC把日志自动写入到远程数据库当中。BufferSize指定缓冲区的大小,当输出内容达到缓冲区的大小时,就把数据写入数据库一次。下面的参数依次为指暄数据库驱动名称、数据库URL地址、数据库登录用户名和密码,模式布局和Select语句。
         

        我们也可以把信息输出到HTML文件当中,并且是按时间段自动生成文件,比如,每隔一个小时或一天、半天生成一个HTML文件:

         log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender
         log4j.appender.A4.File = logs\\log.html
         log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html'
         log4j.appender.A4.layout = org.apache.log4j.HTMLLayout

         第一个参数为指定输出方案为按日期滚动的文件方案。第二个参数指定文件名,第三个指定日期模式,最后一个指定布局为HTML布局。上面的设置会每隔一个小时产生一个HTML文件名,文件名为:log.html.2006-03-24-08.html的样子。
       

          完整的配置文件log4j.properties如下:

         log4j.rootLogger = DEBUG, A1,A4

         log4j.appender.A1 = org.apache.log4j.ConsoleAppender
         log4j.appender.A1.layout = org.apache.log4j.PatternLayout
         log4j.appender.A1.layout.ConversionPattern =[%d{HH:mm:ss}] [%t] %-5p - %m %n


         log4j.appender.A2 = org.apache.log4j.RollingFileAppender
         log4j.appender.A2.File = logs\\test.log
         log4j.appender.A2.MaxFileSize = 1KB
         log4j.appender.A2.MaxBackupIndex = 3
         log4j.appender.A2.layout = org.apache.log4j.PatternLayout
         log4j.appender.A2.layout.ConversionPattern =[%d] %-4r [%t] %-5p %c %x - %m %n

         #11区 定义A3输出到数据库
         log4j.appender.A3 = org.apache.log4j.jdbc.JDBCAppender
         log4j.appender.A3.BufferSize = 40
         log4j.appender.A3.Driver = sun.jdbc.odbc.JdbcOdbcDriver
         log4j.appender.A3.URL = jdbc:ODBC:driver={Microsoft Access Driver (*.mdb)};DBQ=MobileDB.mdb
         log4j.appender.A3.User = 
         log4j.appender.A3.Password = 
         log4j.appender.A3.layout = org.apache.log4j.PatternLayout
         log4j.appender.A3.layout.ConversionPattern = INSERT INTO log4j(createDate, thread, priority, category, message) values('%d', '%t', '%-5p', '%c', '%m')


         log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender
         log4j.appender.A4.File = logs\\log.html
         log4j.appender.A4.DatePattern='.'yyyy-MM-dd-HH'.html'
         log4j.appender.A4.layout = org.apache.log4j.HTMLLayout

     

         在程序里面只需声明使用Property配置文件来控制输出就行了,如下所示:

        static Logger logger = Logger.getLogger(DHMain.class);

         public static void main(String[] args) {
              PropertyConfigurator.configure("conf\\log4j.properties");
              logger.debug("启动..." );

         }

        有了Log4j,我们完全可以抛弃System.out了,用它吃力又不讨好,何苦呢?

      

    发表于 @ 2006年03月24日 20:41:00|评论(loading...)|编辑

    新一篇: Ant实战 | 旧一篇: ICTCLAS分词系统研究(三)--原子切分

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © sinboy