ASP写的日志处理方法 (XML)

xml

  一、实现方法

  一个书写日志的函数,提供几个参数,用户程序调用这个函数就可以实现日志的记录。日志记录到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
   FillZero=ttt
end function

'转化日期,将 一位补上零  2003-1-2  -->  2003-01-02
function ConvertDate(tDate)
   ttt=tDate
   if isdate(tDate) then
      ttt=year(tDate) & "-" & FillZero(month(tDate)) & "-" & FillZero(day(tDate))
   end if
   ConvertDate=ttt
end function

  三、用户格式化的xsl文件:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://www.cccar.com.cn/"
exclude-result-prefixes="msxsl user">

<!-- localized strings -->
<xsl:variable name='ColumnHeader_UserName'>用户</xsl:variable>
<xsl:variable name='ColumnHeader_Time'>时间</xsl:variable>
<xsl:variable name='ColumnHeader_Operate'>操作</xsl:variable>
<xsl:variable name='ColumnHeader_Address'>IP地址</xsl:variable>

<!-- variables -->
<xsl:variable name='TableStyle'>background-color:#DAE6D8;font-family:Simsun, Verdana; font-size:75%; text-align:left; vertical-align:top</xsl:variable>
<xsl:variable name='HeaderStyle'>background:a0b0a8;color:#000000;border-bottom:1 solid black;border-top:1 solid black</xsl:variable>
<msxsl:script language="javascript" implements-prefix="user">
   function xmlDateTime(nodelist) {
           return Date.parse(nodelist.replace(/-/g,"/"));
        }
 </msxsl:script>
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="syslog">

    <html>
    <head>
        <title>
            日志查看
        </title>
    </head>

    <body style='margin:10;background-color:#DAE6D8'>
        <div align="center">
        <table    style="{$TableStyle}" width="100%" align="center" cellspacing='0'>
         
            <thead>
                <tr height="23">
                   
                    <th width="15%" style="{$HeaderStyle}">
                        <xsl:value-of select="$ColumnHeader_UserName"/>
                    </th>
                    <th width="20%" style="{$HeaderStyle}">
                        <xsl:value-of select="$ColumnHeader_Time"/>
                    </th>
                    <th width="50%" style="{$HeaderStyle}">
                        <xsl:value-of select="$ColumnHeader_Operate"/>
                    </th>
                    <th width="15%" style="{$HeaderStyle}">
                        <xsl:value-of select="$ColumnHeader_Address"/>
                    </th>
                </tr>
            </thead>
           
            <tbody style='vertical-align:top'>
                 <tr ><td colspan="4" height="5"></td></tr> 
                 <xsl:for-each select="log">
                    <xsl:sort order='ascending'  select="user:xmlDateTime(string(opdate))" data-type="number"/>
                    
                   <tr height="23">
                   
                     <td valign="bottom"><xsl:value-of select="username"/></td>
                     <td valign="bottom" ><xsl:value-of select="opdate"/></td>
                     <td valign="bottom" ><xsl:value-of select="operate"/></td>
                     <td valign="bottom" ><xsl:value-of select="userip"/></td> 
                  </tr>
                  <tr bgcolor="#999999"><td colspan="4" height="1"></td></tr> 
                </xsl:for-each>
               
                <tr><td colspan="4" align="right">合计:<xsl:value-of select="count(log)"/> 条 </td></tr>   
            </tbody>
        </table>
</div>
    </body>
    </html>

</xsl:template>
</xsl:stylesheet>

时间: 2024-12-30 12:05:02

ASP写的日志处理方法 (XML)的相关文章

asp写的日志处理方法

一.实现方法       一个书写日志的函数,提供几个参数,用户程序调用这个函数就可以实现日志的记录.日志记录到xml文件中,日志文件按日期生成,每天新建立一个日志文件,文件名为:yyyy_mm_dd.xml,分别用了年月日.而查看日志也日常简单,用户想看哪天的日志,只要直接调用该xml文件即可.因为xml文件已经默认了一个xsl文件来格式化输出. 二.书写日志的方法 '记录日志的程序 '作者:塞北的雪 '日期:2004.11.20 'username :用户信息(标示进行该操作的人员) 'op

wince项目中使用log4net写log日志

问题描述 我最近在做一个wince项目,用的VS2008.项目中要求记录一些登录用户等信息,我就想用log4net来做,因为以前做其他项目(不是wince项目)也是用的这个很顺手.然后问题来了,我声明log4net的变量时遇到了问题log4net.ILoglog=log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);就是这句代码,提示找不到GetCurrentMeth

ASP.NET实现伪静态网页方法小结_实用技巧

本文实例总结了ASP.NET实现伪静态网页方法,分享给大家供大家参考之用.具体方法如下: 方法一:利用Httphandler实现URL重写(伪URL及伪静态) 我们有时候会见到这样的地址:"http://www.XXXX.com/show-12-34.html",你或许认为在站点服务器根目录"/"下存在名为"show-12-34.html"的文件,其实实际它可能是不存在的,而可能你看到的内容是"/aspx/show.aspx?type=

sql2005 日志清理 SQL2005压缩清除日志的方法_mssql2005

教你如何清除SQL日志 1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2. 再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在 收缩方式里选择收缩至XXM, 这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了. 清除Log有两种方法: 1.自动清除法开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log. 此方法的优点是无须人工干预, 由SQL S

ASP漏洞分析和解决方法

解决 ASP漏洞分析和解决方法 有人说一台不和外面联系的电脑是最安全的电脑,一个关闭所有端口,不提供任何服务的电脑也是最安全的.黑客经常利用我 们所开放的端口实施攻击,这些攻击最常见的是DDOS(拒绝服务攻击).下面我会列出ASP的二十几个漏洞,每个漏洞都会有漏洞描 述和解决方法. 1 在ASP程序后加个特殊符号,能看到ASP源程序 受影响的版本: win95+pws IIS3.0 98+pws4 不存在这个漏洞. IIS4.0以上的版本也不存在这个漏洞. 问题描述: 这些特殊符号包括小数点,%

日志分析方法概述

日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核.各种应用服务器等等.日志的内容.规模和用途也各不相同,很难一概而论. 本文讨论的日志处理方法中的日志,仅指Web日志.其实并没有精确的定义,可能包括但不限于各种前端Web服务器--apache.lighttpd.tomcat等产生的用户访问日志,以及各种Web应用程序自己输出的日志. 在Web日志中,每条日志通常代表着用户的一次访问行为,例如下面就是一条典型的apache日志: 211.87.152.44 – - [

ASP连接数据库的11种方法及相关语法

连接数据库|语法 编辑注:学会了这些东西,您将基本可以独立完成ASP对数据库的所有操作. ASP连接数据库的11种方法--本文总结了使用ASP链接各种数据库的方法: 1.Access数据库的DSN-less连接方法: set adocon=Server.Createobject("adodb.connection") adoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _ Server.Ma

.Net下几种日志管理方法

.Net下几种日志管理方法 日志是应用程序中不可缺少的一部份,不仅可以记录应用程序的运行状态,还可以记录一些BUG,便于应用程序的更新与修改.在.Net有好几种方法可以对日志进行管理.1.数据库日志.2.文本日志.3.系统事件日志. 首先,对于数据库日志而言,它的使用简单而且方便.这里就不做太多的讨论,相信写过与数据相关的项目的人都会用数据来记录一些日志.然而它唯一不好的就是:必须先保证你的数据库链接是正确无误的.然而这一保证不是必然的,所以这里我再讨论一下其它的两种情况,文本日志及系统事件日志

XMLHTTP ActiveX对象的访问ASP区段变量的其他方法

几个月以前,一个同事到我这里来,说他有一个客户端JavaScript的问题.我不得不向他解释说,活动服务器页面(ASP)的区段变量不能从客户端访问,除非它们通过cookie或者隐藏的输入框被传递.但是我没有停止继续寻找从客户端访问ASP区段变量更好方法的工作.   最近在研究如何不需要上传和下载页面就能够从服务器获取信息时,我读到了关于XMLHTTP ActiveX对象的内容.从本质上讲,这个对象为Internet Explorer和Web服务器通讯并接收回应提供了一种方法.它是MSXML动态加