泛微协同商务系统Ecology系统底层包开发指南Word格式文档下载.docx
《泛微协同商务系统Ecology系统底层包开发指南Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《泛微协同商务系统Ecology系统底层包开发指南Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
方法的处理………
writeLog(s);
//写日志
}
}
2.2怎样记录日志
继承了weaver.general.BaseBean,可以直接使用writeLog方法记录日志信息。
注意这里是使用,而不是调用,因为这个方法是这两个被继承类中的方法。
注意writeLog方法的使用:
/**
*将某个对象写入Log文件
*@paramobj被写入的对象
*/
publicvoidwriteLog(Objectobj)
我们看到,可以被记入日志的是任意一个java对象。
这些java对象将被自动转换成字符串对象(String)记入到日志文件中。
日志文件将每天生成一个,以日志文件名称中的日期来区别,比如:
ecology_20030812.log,代表2003年8月12日的日志。
当天的日志为ecology.log。
每一条日志的记录格式为:
YYYY.MM.DD-HH:
MM:
SS记录日志的类名–日志信息
比如:
2003.03.11-06:
52:
05weaver.datacenter.OutReportResult-sqlisselectROUND(sum(F_sksr),5)fromT_yyrbA,CRM_CustomerInfowhereCRM_CustomerInfo.id=A.crmidandCRM_CustomerInfo.idin(5)andA.reportdate>
='
2004-01-10'
andA.reportdate<
2004-03-10'
andA.inputstatus>
0'
andA.inputstatus<
>
'
9'
andA.modtype='
日志的记录有两种模式,第一种为调试模式,第二种为在线模式。
在第一种模式下,所有的java对象都会记录到日志文件中,包括调试信息,在第二种模式下,只有为Exception(异常)的对象才会记录到日志文件中。
模式的设置在/ecology/WEB-INF/log4jinit.properties属性文件中的log4j.rootLogger属性来指定,如下:
log4j.rootLogger=INFO,A2
#ifyouwanttoopenthetracefromopensource,justadd#aheadofline
log4j.logger.org=ERROR
log4j.logger.uk=ERROR
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.DatePattern='
_'
yyyyMMdd'
.log'
#don'
tmodifythefileproperty
log4j.appender.A2.File=@ecology
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-ddHH:
mm:
ss,SSS}%-5p%c-%m%n
上面的日志表明将所有的信息答应到文件日志文件中,其中日志的模式为:
#FATAL0
#ERROR3
#WARN4只有WARN,ERROR,FATAL输出
#INFO6所有的log都输出
#DEBUG7
记录日志的例子如下:
privatevoidsetResourceInfo()throwsException{
try{
业务处理过程……….
StringdebugInfo="
Thisistest"
;
//在调试模式下将会记入日志文件
writeLog("
debuginfois"
+debugInfo);
}
catch(Exceptione){
//在任何模式下出现异常,都将会记入日志文件
writeLog(e);
throwe;
记录的日志文件形式为:
2007-10-1516:
51:
50,125DEBUGweaver.hrm.resource.ResourceComInfo-debuginfoisThisistest
如果有异常,将会记录为:
50,125ERRORweaver.hrm.resource.ResourceComInfo-java.sql.SQLException:
[Microsoft][SQLServerJDBCDriver][SQLServer]形式参数'
@id_1'
定义为OUTPUT,但实际参数却未声明为OUTPUT。
atcom.microsoft.jdbc.base.BaseExceptions.getException(UnknownSource)
atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(UnknownSource)
atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(UnknownSource)
atcom.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(UnknownSource)
atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(UnknownSource)
atcom.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(UnknownSource)
atcom.microsoft.jdbc.base.BaseSmonExecute(UnknownSource)
atcom.microsoft.jdbc.base.BaseStatement.executeInternal(UnknownSource)
atcom.microsoft.jdbc.base.BasePreparedStatement.execute(UnknownSource)
atweaver.conn.RecordSet.executeProc(RecordSet.java:
155)
109)
atweaver.hrm.resource.ResourceComInfo(ResourceComInfo.java:
59)
atcom.caucho.jsp.JavaPage.service(JavaPage.java:
87)
atcom.caucho.jsp.JavaPage.subservice(JavaPage.java:
81)
atcom.caucho.jsp.Page.service(Page.java:
410)
atcom.caucho.server.http.Invocation.service(Invocation.java:
319)
atcom.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:
333)
atcom.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:
266)
atcom.caucho.server.TcpConnection.run(TcpConnection.java:
140)
atjava.lang.Thread.run(Thread.java:
484)
从上面的日志信息,可以看到ResourceComInfo类的59行代码运行的时候出现错误,这个错误是执行数据库操作的脚本错误,具体的错误信息是:
形式参数'
说明调用数据库脚本的时候参数的数量有出入。
开发过程中请将日志级别设置为INFO,通过日志可检查程序在哪里出错了。
2.3怎样获取属性文件的值
继承了weaver.general.BaseBean的类,可以直接使用getPropValue方法获取属性文件的值。
注意getPropValue方法的使用:
*从配置文件中获取某个属性的值
*@paramfname属性文件名称
*@paramkey值
*@returnString属性值
publicStringgetPropValue(Stringfname,Stringkey)
getPropValue方法指定了从某一个属性文件fname中获取键值key的值。
这里的属性文件必须存放在系统运行目录下的WEB-INF/prop目录下,文件名称为参数fname指定的文件名,不包括属性文件的后缀名,属性文件的后缀名必须为.properties。
系统的运行目录为d:
\ecology\,那么属性文件必须放在d:
\ecology\WEB-INF\prop\目录下,取名为thefilename.properties,其中thefilename是任意的。
在属性文件中某一个键值的值用等号来赋值,等号后面的值必须放在一行,如果一行不够写(或者为了查看的方便),可以用\来链接多行。
否则其它行的值不能被键值取得。
等号左右都可以有空格,对键值和键值的值没有影响。
比如:
thekeyname=thevalue
将键值的值放到多行:
thekeyname=thevalue1\
thevalue2\
thevalue3
thevalue4
这时候thekeyname的值为thevalue1thevalue2thevalue3,thevalue4取不到,因为thevalue3后面没有