6 日志相关设置
<LogSetting type="object"> </LogSetting>这对标签之间的一系列参数提供了完整的日志参数设置,从而使用户可以定制符合自己应用习惯的输出日志。
6.1 崩溃日志的处理
当应用程序出现崩溃时,日常的日志无法记录相关信息,因此,需要通过开启崩溃日志来记录相关的信息,以下两项用来进行崩溃日志的相关设置:
l <DumpEnabled></DumpEnabled>设置是否开启崩溃日志,该参数的值有两种情况:true表示开启;false表示不开启。
l <DumpPath>./Dumps/</DumpPath>设置崩溃日志的输出路径,该路径为相对路径,即相对于SuperMap.xml自身文件的路径。
6.2 开启/关闭日志功能
<LogEnabled></LogEnabled>控制是否自动启动日志功能的参数。该参数的值有两种情况:true 表示软件运行时自动启动日志功能;false 表示手动启动日志功能。默认值为 true。
6.3 日志文件的设置
6.3.1 日志文件存储路径
<LogFileLocation>./log</LogFileLocation>设置日志文件存放的位置,若目录为空,则默认写到安装目录下的 Bin 目录下。用户可自行修改日志文件的存放位置。例如,设置日志文件存储路径为:“D:\Log”。
6.3.2 日志文件存储方式
<StorageType></StorageType>控制日志文件的存储方式。 Text 表示日志文件存储以文本类型文件进行存储, XML 表示日志文件以 XML 文件进行存储, Memory 表示日志文件存储在内存中。默认为 Text。
<LogPhysicalSave></LogPhysicalSave>控制是否按照 StorageType 规定类型进行存储。 true 表示按照 StorageType 规定类型进行存储,例如StorageType = Text,则日志文件就会以文本形式存储;若为 false 则表示不管 StorageType 规定了什么类型,都把日志文件存储在内存中。
6.3.3 日志分文件存储
当存在以下情况时,日志需要分文件进行存储。
l 第一,<LogTimeInterval></LogTimeInterval>用来控制日志分文件存储的时间间隔,该参数的值有五种时间类型:None、Hour、Day、Week、Month。None 表示用一个文件进行存储;Hour 表示每隔一小时新建一个日志文件进行存储;Day 表示每隔一天新建一个日志文件进行存储;Week 表示每隔一个星期新建一个日志文件进行存储;Month 表示每隔一个月新建一个日志文件进行存储。默认值为 Day,即默认每隔一天新建一个日志文件。
l 第二,当日志文件的大小超过了<MaxFileSize></MaxFileSize>所指定的大小时,经根据情况进行日志的分文件存储,具体如下:
<MaxFileSize> </MaxFileSize>用来控制日志文件的大小。若日志文件的大小达到了 MaxFileSize 的值,则系统会根 ExceedSizeMode 来处理日志文件。MaxFileSize 的类型为长整型,单位为比特,若 MaxFileSize 值为-1表示没有文件大小控制。
当日志文件的大小达到了 MaxFileSize 的值,系统根据 <ExceedSizeMode></ExceedSizeMode>的值来处理日志文件。该参数值有三种情况:
n Rolling 表示回滚处理,即从当前文件头开始进行覆盖写入;
n ReOpen 表示重新打开文件处理,即将当前文件清空,然后重新打开写入;
n NewFile 表示新建一个文件进行记录,新建文件名为原有文件名 + #1、#2、#3 等依此类推。
6.3.4 日志文件文件名称规则
<LogFilePrefix>UGC</LogFilePrefix>为日志文件名的前缀,文件名的后缀为“.log”,用户可以自定义前缀名,但文件名称中不能包含下表字符。
问号 |
? |
引号 |
" |
斜杠 |
/ |
反斜杠 |
\ |
小于号 |
< |
大于号 |
> |
星号 |
* |
竖线 |
| |
冒号 |
: |
此外,日志并不是只输出到一个日志文件中,用户可以根据所设定的时间规则,建立新的日志文件存储输出的日志信息,也就是日志分文件存储的规则。
<LogTimeInterval></LogTimeInterval>用来控制日志分文件存储的时间间隔,该参数的值有五种时间类型:None、Hour、Day、Week、Month。None 表示用一个文件进行存储;Hour 表示每隔一小时新建一个日志文件进行存储;Day 表示每隔一天新建一个日志文件进行存储;Week 表示每隔一个星期新建一个日志文件进行存储;Month 表示每隔一个月新建一个日志文件进行存储。默认值为 Day,即默认每隔一天新建一个日志文件。
因此,日志文件的文件名称还包含了与日志分文件存储的时间间隔相关的内容。具体如下:
在启动日志文件后,首先判断LogTimeInterval的值:
LogTimeInterval = None
日志文件的名称为:“前缀_PID.log”。若设置了MaxFileSize的值,且ExceedSizeMode = NewFile,则当日志文件的大小超过了MaxFileSize,文件命名为“前缀_PID#1.log”、“前缀_PID#2.log”、“前缀_PID#3.log”……,依次类推。例如,UGC_2212#2.log表示前缀为UGC,当前PID为2212,#2表示超过MaxFileSize新建文件的标记。
LogTimeInterval = Week、Day、Hour
日志文件的名称为:“前缀_PID_日期.log”。当时间间隔超过了LogTimeInterval时,日志文件名称为“前缀_PID_日期_1.log”、“前缀_PID_日期_2.log”、“前缀_PID_日期_3.log”……依次类推。若同时设置了MaxFileSize的值,且ExceedSizeMode = NewFile,则当日志文件的大小超过了MaxFileSize,则在前面文件名的基础上在后面添加#1、#2、#3……,依次类推。例如,UGC_2212_2007121914_1#3.log,表示前缀为UGC,新建日志文件的时间为2007年12月19日14时,当前PID为2212,_1 是超过时间间隔新建文件添加的标记,#3是超过MaxFileSize新建文件的标记。
注意:
日期精确到小时,即年月日时。
PID为进程标志符。在Windows下,可以在通过“Windows任务管理器”查看。在“Windows任务管理器”下的“查看”菜单下,点击“选择列”,选中“PID(进程标志符)”即可在Windows任务管理器窗口中查看PID。
若日志文件的类型为xml格式,则.log更换为.xml。
在UGC的使用过程中,用户可根据实际情况对这些参数进行修改,保存之后,重新启动应用程序即可生效。本文将对用户可以自定义的参数进行一些说明。
6.3.5 日志输出设置
<IsAppend>false</IsAppend>如果要写入的日志文件存在,用 IsAppend 来控制是否继续追加到当前日志文件。该参数的值有两种情况:true 表示继续追加;false 表示覆盖原有日志文件。默认值为 false。
重复日志的处理方式
<IsFilter>false</IsFilter> 用来控制是否过滤重复日志。该参数的值有两种情况:true 表示过滤重复日志,false 表示不过滤重复日志。默认值为 false。例如进行了1000个相同的操作,每个操作都会输出一个“成功”,若 IsFilter 设为 true,则就只会输出一个“成功”的记录,若 IsFilter 设为 false,则会重复输出1000个“成功”。
日志输出格式
<LogFormat></LogFormat>规定了日志文件中每条日志记录的内容。建议不要随便修改LogFormat 的内容。如果您是高级用户,可以根据自己的需求进行修改,例如您不需要在日志中记录日志的错误级别,则可以将"%Level"删除,或者可以随意添加分隔符,例如:中括号,大括号,竖线、星号等。LogFormat 中,用"\n"来进行回车,用"\t"代表制表符等。
示例:
<LogFormat>%DATETIME| %TIMESPAN| %RESID| %THREADID| %LEVEL| %MSG| %CODEFILE(%CODELINE)</LogFormat>
标签 |
说明 |
%DATETIME |
当前日志记录的时间和日期,格式如 DateTimeFormat 所示 |
%TIMESPAN |
相邻两次日志记录之间的时间间隔(可以用来进行两次日志之间的性能记录) |
%LEVEL |
当前记录的错误信息级别,级别类型参考 LogLevel |
%MSG |
日志的描述信息 |
%THREADID |
线程的ID |
%CODEFILE |
出错的代码所在的文件名 |
%CODELINE |
出错的代码所在的行数 |
<DateTimeFormat> </DateTimeFormat>规定了日志文件中日期和时间的格式,其中年月日分别用 %Y,%m,%d 来表示,小时分钟秒分别用 %H,%M 和 %S 来代替。默认的日期时间格式为:年-月-日 小时:分钟:秒,高级用户可以根据自己的习惯,修改日期和时间的格式。
示例:
<DateTimeFormat>%Y-%m-%d %H:%M:%S</DateTimeFormat>
日志输出级别
<LogLevel>error</LogLevel>定义错误日志记录级别的常量。该参数的值有两种情况:debug 是面向程序员的级别,包含所有信息;error 是面向用户的,包含非法操作等可能引起的错误信息。默认值为 error。
日志存盘频率
<LogCountToDisk></LogCountToDisk>控制日志多少条向磁盘中写入一次。
<LogCountInMemory></LogCountInMemory>控制内存中保存多少条日志后写入日志文件。