RSS

Monthly Archives: 1月 2012

MyEclipse9安装Checkstyle5.5插件(图解)

首先下载Eclipse Checkstyle Plug-in
    官方首页:http://sourceforge.net/projects/eclipse-cs/files/
    最新版为:net.sf.eclipsecs-updatesite_5.5.0.201111092104-bin.zip
打开MyEclipse9,选择菜单MyEclipse→MyEclipse Configuration Center→Software
点击右边的add site,然后在Add Update Site里面输入Name和URL。
URL:点击Add from Archive File,然后选择上面下载的zip包。
MyEclipse-add site
Personal Sites栏里选择Eclipse Checkstyle Plug-in,然后右键选择Add to Profile…,Software Updates Available栏里面打上勾,在底下的Pending Changes栏里点击Apply 1 Change按钮。
MyEclipse Configuration Center 
这一步安装插件可能出现”Resolving and validating the profile“卡死不动的问题,其实只要断网就可以继续了。
MyEclipse-Validating 
I acknowledge and accept ALL of the above licenses打勾,点击Next。
MyEclipse-Licenses 
剩余空间确认,点击Update。
MyEclipse-Update 
耐心等待安装结束…
MyEclipse-Install 
点击Restar Now,重启MyEclipse。
MyEclipse-Restart 
安装成功确认。点击Windows→Preferences
MyEclipse-Checkstyle5.5
Eclipse里的话就是Help > Software Updates > Find and Install,里面操作大同小异。

 
留下评论

Posted by 于 2012/01/10 22:03:47 在 Web Development

 

标签: , ,

log4j日志使用实例及配置过程中问题的解决(图解)

一、介绍
    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
要下载和了解更详细的内容请访问官方网站:http://jakarta.apache.org/log4j

二、配置文件
    下载所需的JAR包(我这边是myEclipse9开发的有些包已经有了,这里为了方便大家把官方地址给找好了)
     1:CommoLogging:commons-logging-1.1.1.jar
     2:log4j:log4j-1.2.16.jar
     3:JavaMail:mail-1.4.4.jar
     4:JavaBeans Activation Framework (JAF):activation.jar
     以上Jar包复制到WebRoot\WEB-INF\lib目录下。
    添加日志配置文件
    simplelog.properties是CommoLogging默认使用的SimpleLog日志组件的配置文件,这里我们用的是Log4j文件,所以就没有必要配置这个文件了。
    在src目录下,新建commons-logging.properties和log4j.properties。    
    配置commons-logging.properties
                #set Log as Log4J
        org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
        #set Log as JDK1.4
        #org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
        #set Log as Avalon-Logkit
        #org.apache.commons.logging.Log=org.apache.commons.logging.impl.LogKitLogger
        #set Log as SimpleLog
        #org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
        #set Log as NoOpLog
        #org.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog
 
    配置log4j.properties
            1)输出到控制台ConsoleAppender
            2)输出到文件FileAppender
            3)按DatePattern输出到文件DailyRollingFileAppender
            4)设定文件大小输出到文件RollingFileAppender
            5)用Email发送日志
            6)将日志登录到数据库
            这里列出了6个日志输出方式,详尽配置文件请看另一篇:log4j.properties配置详解与实例-全部测试通过
    建一个JAVA文件作为输出日志测试用,写法看下图。
    log4j-TestLog.java 
    工程目录结构
    log4j-Directory Structure
    执行第⑤步,得到各个输出效果(下图为日志登录到数据库)
    log4j-logDB

三、以上测试时遇到问题
    发送邮件报错(原因:myEclipse9自带的发邮件包与JavaMail冲突)

        log4j:WARN Error during default initialization
        java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
    解决办法:在安装(D:\Program Files\MyEclipse\Common\plugins\com.genuitec.eclipse.j2eedt.core_9.0.0.me201103181703\data\libraryset\EE_5)目录找到javaee.jar,用Winrar,7zip等工具删除里面的文件夹(mail,activation)
    log4j-javaee.jar 
    发送邮件标题和正文乱码问题
    解决办法:
        标题:将文字用native2asii转换一下编码就可以。
        正文:网上说是继承HTMLLayout然后重写getContentType(),本人测试过了不行。在继承了Layout,然后重写Layout里面的getContentType()是可以的。
    调用方法:log4j.appender.logMail.layout = Source路径(com.sun.DefineLayOut)
    按照测试结果我们可以看出trace和debug属于同一级。
    ④在上面二的第⑤里面有个log.isDebugEnabled()这个意思是加上isDebugEnabled就可以避免执行debug pring1,如果不加,debug pring1是被执行了的,这样就白费功夫。
    ⑤大小写敏感问题。如:log4j.appender.systemOut.layout=xxx 这里的layout必须小写。

 
一条评论

Posted by 于 2012/01/08 13:11:25 在 Web Development

 

标签: ,

log4j.properties配置详解与实例-全部测试通过

最近使用log4j写log时候发现网上的写的都是千篇一律,写的好的嘛不全,写的全一点的嘛没有一点格式,看着累。这里把网上收集到的整理了一下,并且全部都在机器上测试成功了。这么好的文档估计没有了吧?
当然在写的多多少少遇到点问题,这里是我写的例子和各种问题解决办法。点击以下链接查看:
log4j日志使用实例及配置过程中问题的解决(图解)
################################################################################
#
配置根Logger,其语法为:
#
#log4j.rootLogger = [level],appenderName,appenderName2,…
#level是日志记录的优先级,分为OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL
##Log4j建议只使用四个级别,优先级从低到高分别是DEBUG,INFO,WARN,ERROR
#通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关
#比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来
#appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的
################################################################################
################################################################################
#
配置日志信息输出目的地Appender,其语法为:
#
#log4j.appender.appenderName = fully.qualified.name.of.appender.class
#log4j.appender.appenderName.optionN = valueN
#
#Log4j提供的appender有以下几种:
#1)org.apache.log4j.ConsoleAppender(输出到控制台)
#2)org.apache.log4j.FileAppender(输出到文件)
#3)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
#4)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
#5)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
#
#1)ConsoleAppender选项属性
# -Threshold = DEBUG:指定日志消息的输出最低层次
# -ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出
# -Target = System.err:默认值System.out,输出到控制台(err为红色,out为黑色)
#
#2)FileAppender选项属性
# -Threshold = INFO:指定日志消息的输出最低层次
# -ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出
# -File = C:\log4j.log:指定消息输出到C:\log4j.log文件
# -Append = FALSE:默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容
# -Encoding = UTF-8:可以指定文件编码格式
#

#3)DailyRollingFileAppender
选项属性
# -Threshold = WARN:
指定日志消息的输出最低层次
# -ImmediateFlush = TRUE:
默认值是true,所有的消息都会被立即输出
# -File = C:\log4j.log:
指定消息输出到C:\log4j.log文件
# -Append = FALSE:
默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容
# -DatePattern=’.’yyyy-ww:
每周滚动一次文件,即每周产生一个新的文件。还可以按用以下参数:
#              ‘.’yyyy-MM:
每月
#              ‘.’yyyy-ww:
每周
#              ‘.’yyyy-MM-dd:
每天
#              ‘.’yyyy-MM-dd-a:
每天两次
#              ‘.’yyyy-MM-dd-HH:
每小时
#              ‘.’yyyy-MM-dd-HH-mm:
每分钟
# -Encoding = UTF-8:
可以指定文件编码格式
#
#4)RollingFileAppender
选项属性
# -Threshold = ERROR:
指定日志消息的输出最低层次
# -ImmediateFlush = TRUE:
默认值是true,所有的消息都会被立即输出
# -File = C:/log4j.log:
指定消息输出到C:/log4j.log文件
# -Append = FALSE:
默认值true,将消息追加到指定文件中,false指将消息覆盖指定的文件内容
# -MaxFileSize = 100KB:
后缀可以是KB,MB,GB.在日志文件到达该大小时,将会自动滚动.如:log4j.log.1
# -MaxBackupIndex = 2:
指定可以产生的滚动文件的最大数
# -Encoding = UTF-8:
可以指定文件编码格式
################################################################################
################################################################################
#
配置日志信息的格式(布局),其语法为:
#
#log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
#log4j.appender.appenderName.layout.optionN = valueN
#
#Log4j
提供的layout有以下几种:
#5)org.apache.log4j.HTMLLayout(
以HTML表格形式布局)
#6)org.apache.log4j.PatternLayout(
可以灵活地指定布局模式)
#7)org.apache.log4j.SimpleLayout(
包含日志信息的级别和信息字符串)
#8)org.apache.log4j.TTCCLayout(
包含日志产生的时间、线程、类别等等信息)
#9)org.apache.log4j.xml.XMLLayout(
以XML形式布局)
#
#5)HTMLLayout
选项属性
# -LocationInfo = TRUE:
默认值false,输出java文件名称和行号
# -Title=Struts Log Message:
默认值 Log4J Log Messages
#
#6)PatternLayout
选项属性
# -ConversionPattern = %m%n:
格式化指定的消息(参数意思下面有)
#
#9)XMLLayout
选项属性
# -LocationInfo = TRUE:
默认值false,输出java文件名称和行号
#
#Log4J
采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
# %m
输出代码中指定的消息
# %p
输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
# %r
输出自应用启动到输出该log信息耗费的毫秒数
# %c
输出所属的类目,通常就是所在类的全名
# %t
输出产生该日志事件的线程名
# %n
输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
# %d
输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式
#   
如:%d{yyyy年MM月dd日 HH:mm:ss,SSS},输出类似:2012年01月05日 22:10:28,921
# %l
输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
#   
如:Testlog.main(TestLog.java:10)
# %F
输出日志消息产生时所在的文件名称
# %L
输出代码中的行号
# %x
输出和当前线程相关联的NDC(嵌套诊断环境),像java servlets多客户多线程的应用中
# %%
输出一个”%”字符
#
#
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
#  %5c:
输出category名称,最小宽度是5,category<5,默认的情况下右对齐
#  %-5c:
输出category名称,最小宽度是5,category<5,”-“号指定左对齐,会有空格
#  %.5c:
输出category名称,最大宽度是5,category>5,就会将左边多出的字符截掉,<5不会有空格
#  %20.30c:category
名称<20补空格,并且右对齐,>30字符,就从左边交远销出的字符截掉
################################################################################
################################################################################
#
指定特定包的输出特定的级别
#log4j.logger.org.springframework=DEBUG
################################################################################

#OFF,systemOut,logFile,logDailyFile,logRollingFile,logMail,logDB,ALL
log4j.rootLogger =ALL,systemOut,logFile,logDailyFile,logRollingFile,logMail,logDB

#输出到控制台
log4j.appender.systemOut = org.apache.log4j.ConsoleAppender
log4j.appender.systemOut.layout = org.apache.log4j.PatternLayout
log4j.appender.systemOut.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/ddHH:mm:ssS}][%l]%n%m%n
log4j.appender.systemOut.Threshold = DEBUG
log4j.appender.systemOut.ImmediateFlush = TRUE
log4j.appender.systemOut.Target = System.out

#输出到文件
log4j.appender.logFile = org.apache.log4j.FileAppender
log4j.appender.logFile.layout = org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/ddHH:mm:ssS}][%l]%n%m%n
log4j.appender.logFile.Threshold = DEBUG
log4j.appender.logFile.ImmediateFlush = TRUE
log4j.appender.logFile.Append = TRUE
log4j.appender.logFile.File = ../Struts2/WebRoot/log/File/log4j_Struts.log
log4j.appender.logFile.Encoding = UTF-8

#按DatePattern输出到文件
log4j.appender.logDailyFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.logDailyFile.layout = org.apache.log4j.PatternLayout
log4j.appender.logDailyFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/ddHH:mm:ssS}][%l]%n%m%n
log4j.appender.logDailyFile.Threshold = DEBUG
log4j.appender.logDailyFile.ImmediateFlush = TRUE
log4j.appender.logDailyFile.Append = TRUE
log4j.appender.logDailyFile.File = ../Struts2/WebRoot/log/DailyFile/log4j_Struts
log4j.appender.logDailyFile.DatePattern = ‘.’yyyy-MM-dd-HH-mm’.log’
log4j.appender.logDailyFile.Encoding = UTF-8

#设定文件大小输出到文件
log4j.appender.logRollingFile = org.apache.log4j.RollingFileAppender
log4j.appender.logRollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.logRollingFile.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/ddHH:mm:ssS}][%l]%n%m%n
log4j.appender.logRollingFile.Threshold = DEBUG
log4j.appender.logRollingFile.ImmediateFlush = TRUE
log4j.appender.logRollingFile.Append = TRUE
log4j.appender.logRollingFile.File = ../Struts2/WebRoot/log/RollingFile/log4j_Struts.log
log4j.appender.logRollingFile.MaxFileSize = 1MB
log4j.appender.logRollingFile.MaxBackupIndex = 10
log4j.appender.logRollingFile.Encoding = UTF-8

#用Email发送日志
log4j.appender.logMail = org.apache.log4j.net.SMTPAppender
log4j.appender.logMail.layout = org.apache.log4j.HTMLLayout
log4j.appender.logMail.layout.LocationInfo = TRUE
log4j.appender.logMail.layout.Title = Struts2MailLogFile
log4j.appender.logMail.Threshold = DEBUG
log4j.appender.logMail.SMTPDebug = FALSE
log4j.appender.logMail.SMTPHost = SMTP.163.com
log4j.appender.logMail.From = xly3000@163.com
log4j.appender.logMail.To = xly3000@gmail.com
#log4j.appender.logMail.Cc = xly3000@gmail.com
#log4j.appender.logMail.Bcc = xly3000@gmail.com
log4j.appender.logMail.SMTPUsername = xly3000
log4j.appender.logMail.SMTPPassword = 1234567
log4j.appender.logMail.Subject = Log4jLogMessages
#log4j.appender.logMail.BufferSize = 1024
#log4j.appender.logMail.SMTPAuth = TRUE

#将日志登录到MySQL数据库
log4j.appender.logDB = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.logDB.layout = org.apache.log4j.PatternLayout
log4j.appender.logDB.Driver = com.mysql.jdbc.Driver
log4j.appender.logDB.URL = jdbc:mysql://127.0.0.1:3306/xly
log4j.appender.logDB.User = root
log4j.appender.logDB.Password = 123456
log4j.appender.logDB.Sql = INSERT INTO T_log4j(project_name,create_date,level,category,file_name,thread_name,line,all_category,message)values(‘Struts2’,’%d{yyyy-MM-ddHH:mm:ss}’,’%p’,’%c’,’%F’,’%t’,’%L’,’%l’,’%m’)

 
一条评论

Posted by 于 2012/01/08 13:06:59 在 Web Development

 

标签: , ,

把Javadoc转换成CHM格式的帮助文档

前言
    Eclipse或者MyEclipse自动打成的Javadoc文档都是基于网页格式的,打开是很方便,不过真的用的时候,搜索每个方法的时候就很麻烦了,而chm帮助文档格式不但文件小,索引,检索都很方便。

这里介绍一种jd2chm.exe转换工具,把这个文件(jd2chm.exe)放到需要生成Javadoc的目录下,必须保证同一个目录下一定要有index.html,不然不能生成。双击打开exe,填写project name和project title即可。
官方网站(要翻墙访问):http://www.burgaud.com/jd2chm/
以下是官方摘要:

以下使用的网上改进版本jd2chm_0.34。于原版本的好处是不需在放到Javadoc目录下了,还可以使用最新的微软雅黑字体,而且能够生成hhc、hhk、hhp文件,方便我们使用HTML Help Workshop(http://msdn.microsoft.com/en-us/library/ms669985.aspx)进行编辑。遗憾的是会多出个about.html。
Javadoc directory path:Javadoc目录
project name:文件名称
project title:文件抬头名称
以下3个都是y,然后回车。
jd2chm.exe 
生成好的文件
JavaDoctoCHM_File 
打开生成好的chm(中文文档)
JavaDoctoCHM_chm 

⑤此文用到的工具已经打包好了,可以在此下载:
https://skydrive.live.com/embed?cid=D00EA62D008229BB&resid=D00EA62D008229BB%215366&authkey=ANflpcmTxch-qhs

此文参考了以下作者的文章
李顺利:http://www.blogjava.net/lishunli/archive/2011/07/14/308618.html

 
留下评论

Posted by 于 2012/01/03 11:32:12 在 Web Development

 

标签: , ,

Eclipse导出(Export)Java文档(Javadoc)-解决乱码问题

首先选中项目,按右键,选择Export(导出)。
Eclipse-Export
在Export(导出)对话框中选择Java下的Javadoc,点击下一步(Next)
Eclipse-Generate Javadoc_1
Javadoc command:默认自动选择好了。要选择的话应该是jdk的bin/javadoc.exe
              Destination:为生成文档的保存路径,可自由选择。
在Select types for which Javadoc will be generated栏中给项目打上勾,点击下一步(Next)
Eclipse-Generate Javadoc_2
Document title可输入标题,这一步都是默认就可以,点击下一步(Next)
Eclipse-Generate Javadoc_3
Java代码编写的时候会用(GBK,UTF-8)等,这里的VM options如果不填,生成Javadoc文档时就会报警告:编码 GBK 的不可映射字符,或者生成的中文文档会有乱码问题。
解决办法(VM options中填入以下参数):
英文:-locale en_US -encoding UTF-8 -charset UTF-8
中文:-locale zh_CN -encoding UTF-8 -charset UTF-8
日文:-locale ja_JP -encoding UTF-8 -charset UTF-8
Eclipse-Generate Javadoc_4
点击Finish,生成之后的文件夹目录以及index.html
Eclipse-Javadoc
Eclipse-Javadoc_index.html

 
留下评论

Posted by 于 2012/01/02 17:28:27 在 Web Development

 

标签: , ,