日期:2010-07-06  浏览次数:21013 次

  一、实现方法

  一个书写日志的函数,提供几个参数,用户程序调用这个函数就可以实现日志的记录。日志记录到xml文件中,日志文件按日期生成,每天新建立一个日志文件,文件名为:yyyy_mm_dd.xml,分别用了年月日。而查看日志也日常简单,用户想看哪天的日志,只要直接调用该xml文件即可。因为xml文件已经默认了一个xsl文件来格式化输出。

  二、书写日志的方法

'记录日志的程序
'作者:塞北的雪
'日期:2004.11.20
'username :用户信息(标示进行该操作的人员)
'operate  :操作(标示用户进行了什么操作)
'userip   :用户IP(标示用户用于登录系统的计算机的IP地址)
'opdate   :用户操作发生的日期
'日志写入一个xml文件,第一次写入时如果xml文件不存在,则创建。
'返回值:1  表示打开日志文件时出错
'返回值:9  表示正确完成写入日志文件
 
 
function WriteSysLog(sys_userid,sys_username,operate)
    dim op_username
    if  trim(sys_userid)=""  and trim(sys_username)=""  then 
  op_username="匿名"
 else
     op_username = sys_userid & "/" & sys_username
 end if
 
 xmlPath="/" & getRoot() & "/log/SysLog/"
 xmlFile=replace(cstr(ConvertDate(date())),"-","_") & ".xml"
 RootNode="syslog"                  '日志文件根节点名字
 LogFile=server.mappath(xmlPath & xmlFile)  '日志文件路径
 set fso=server.CreateObject("scripting.filesystemobject")
 
 '如果日志文件不存在,就创建一个,并写入头信息和根信息
 if not fso.FileExists(LogFile) then
       fso.CreateTextFile LogFile
       set fff=fso.GetFile(LogFile)
       set mmm=fff.openastextstream(2)
       mmm.write "<?xml version=""1.0"" encoding=""gb2312"" ?>" & vbcrlf & "<?xml-stylesheet type='text/xsl' href='../logInfo.xsl'?>" & vbcrlf &  "<" & rootnode & "></" & rootnode & ">"
       set mmm=nothing
       set fff=nothing
 end if
 set fso=nothing
 
 Set xd = Server.CreateObject("msxml2.domdocument") 
 xd.async = false 
 xd.load(LogFile)
 if xd.parseError.errorcode<>0 then
      WriteSysLog=1   '打开日志文件出错
         exit function
 end if
 
 '创建新节点信息
 
 set et=xd.documentElement 
 
 
   
    set cnode=xd.createElement("log")
    et.appendchild(cnode)
  
    set node2=xd.createElement("username")
    node2.text=op_username
    cnode.appendchild(node2)
    set node2=xd.createElement("operate")
    node2.text=operate
    cnode.appendchild(node2)
    set node2=xd.createElement("userip")
    node2.text=Request.ServerVariables("Remote_Addr")
    cnode.appendchild(node2)
    set node2=xd.createElement("opdate")
    node2.text=cstr(now())
    cnode.appendchild(node2)
    xd.save LogFile   '写入日志文件
   
    set cnode=nothing
    set node2=nothing
    set xd=nothing
    writeSysLog=9  '说明正常写入了日志信息
end function 


 '获得当前虚拟目录的名字
 function getRoot()
    url=Request.ServerVariables("URL")
    url=right(url,len(url)-1)
    getRoot= mid(url,1,instr(url,"/")-1)
 end function
 
'将一个一位的数字前面加零
function FillZero(str)
   ttt=str
   if len(str)=1 then
      ttt="0" & str
   end if
 &