系统操作日志

news/2024/11/17 10:44:10/

   1、  我想实现:

  我想设置一个JSP程序,只要有用户登陆网站(管理员或非法的),不管登录成功或失败都把登陆的用户名(登陆信息,执行页面)记录到数据库中,还有登陆后台后对网站的修改也要做个记录,比如修改过新闻,删除留言,修改过网站配置等都有记录,不要求可恢复,能记录七天,或是1000条记录这样就可以了.多的记录可以自动删除....类似的功能该如何实现?

   ————思路:

  a, 写个公用函数:
function doRecordLog(username, action, content)
    ' 该函数内部实现记录用户操作日志功能
end function
 b, 各页面需要记录日志的操作都调用这个函数.

————思路2:

   四种办法:

a.每页生成一个不同session,如果该页结束,将值付给变量传递到数据库保存。
b.为每条记录设置新建时的日期,修改时的日期,分别保存在数据库中,显示在管理页面,如果看到哪条记录是新修改的,就会是新的日期,新建的日期是不会变的。
c.放置一个访问统计页,统计每位后台管理者访问过的路径,我有用访问统计,能查看到来者的每个脚印,和对方的IP,不过是用在前台,当然后台也可以用的。
d.如果你想控制管理者的操作权限,可以设置多个管理组,为不同的组设置不同的管理权限,就像window一样,有管理员权限和guest权限,这样有些用户只能看而不能修改。

我就一直用第二种办法,查看更新情况的。

 

CREATE TABLE eventlog(
cid int primary key not null,
csort varchar(50) null,
cusername varchar(50) null,
ctime datetime,
cdo varchar(250) null,
cip varchar(20)
)

程序
先调用数据库
然后
<%
Function events(csort,cusername,cdo)
cip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If cip = "" Then
cip = Request.ServerVariables("REMOTE_ADDR")
End If
ctime=now()
safesql="select * from tb_eventlog"
set rsyss=server.CreateObject("adodb.recordset")
rsyss.open safesql,con,1,3
rsyss.addnew
rsyss("csort")=csort
rsyss("cusername")=cusername
rsyss("cdo")=cdo
rsyss("ctime")=ctime
rsyss("cip")=cip
rsyss.update
rsyss.close
End Function
%>

 

不就写日记吗?

一般比较合理的作法是,先将操作中进行一闪的格式。
比如:一个管理员对数据库做了一些调整,他删除了某一个用户,那么在删除用户的同时应该向日志中记录。

这个肯定是管理员,首先它是登陆的,那么可以用session("userID")保存其登陆状态的,同时取出该值,向日记数据库中记录,这样首先做到了定位人的目的,当然这个操作是在删除用户中进行的,那么可以在动作中注明的。所以数据库的建立很清楚了:
userid      datetime     active
userid是用存放是谁做的动作
datetime用来存放在何时的动作
active用来指明动作,比如删除用户等文本方式存储
如有需要可以对该数据表进行扩充。
管理员在删除用户时,先将动作写入了日记数据库,然后才开始做删除用户的动作。这样完全记录了管理员的动作。

访问网页,可以在登陆后进行的。
比如有一个网页是abc.asp
那么在abc.asp最开始的地方测试session("userid")如果存在则,向日记数据库中插入记录,userid插入session("userid"),当前时间插入到datetime中,将字符串“访问了abc网页”插入到active中,这样你取出记录可以看到,某一用户在某一时间,访问了abc网页。当然如果访问网页过多,可以将这一段写出来,导入到每个网页中。就可以了!

至于怎么控制网页的开始,这是一个重定向的问题。
比如,你在后台中写了关闭网站中的某个页面,则可以用一个application("vis")变量来控制。点击关闭时,执行了一个事件,application("vis")="false",反之,将这个值取为true,在application-start事件中先义其打开或关闭。

运行该网页时最开始,去取application("vis")的值,若是true,则显示该页,不用有动作,若是false则将网页定向到另一个提示网页中!

当然,我这里是以application为例的,其实你也可以存入数据库中的,所以存入的作为配置。这样即使重启服务器也不会丢失的!只不过这里的原理就是这样!

简单不?它和写普通页面没有什么区别的!所谓的后台只不过是管理员登陆的!实际上对于开发来说是不分前台后台的。这个名词只是网页功能的区分而已!

在执行操作或进入某页时调用
<%'如在用户登录时
events "用户登录",session("username"),"成功登录后台管理"

'在信息修改时
events "企业荣誉",session("username"),"修改荣誉分类名称"

%>这样子就可以了

第二个没看懂你说的是什么意思
那你在页面前面加一个判断不就行了
先设定一个表
页面  值(0/1)
在每页

if Request.ServerVariables("SERVER_PORT")<>"80" then
     userurl = "http://"&Request.ServerVariables("SERVER_NAME")& ":" & Request.ServerVariables("SERVER_PORT")& Request.ServerVariables("URL")
    else
     userurl = "http://"&Request.ServerVariables("SERVER_NAME")& Request.ServerVariables("URL")
end if
取你的网址
userurl=right(UserUrl,InstrRev(UserUrl,"/")+1)取你网址中的网页名
然后
读你表里网页名相同的 在进行判断 如果值为0就是关闭了如果值为1就是可以看
你后台里在做一个页来控制页是否关闭就行了

   ——————————操作日志————————

    a、 日志里大概会记录:谁在什么时间什么地方做了什么操作
所以写一个类似的过程,addlog(user,time,place,operate)在需要记录的地方调用即可.
比如要记录登陆过程,则在登陆完成之后记录,登陆的用户名,时间,(这里地方可以不记录了,因为应该只有一个登陆点吧),操作则是登陆.
其他地方类似的如此调用去记录.

b、 我是放在一个单独的日志文件里的,按日期来命名
procedure WriteToTxt(content:string);
var
F: Textfile;
path,name:string;
begin
  name:=FormatDateTime('yyyy-mm-dd',now);//取得日期
    path:=ExtractFilePath(Application.ExeName)+'log/'+ name+'.txt';//日志存取路径
    AssignFile(F,path);
    if FileExists(path) =False then
    ReWrite(F);
    Append(F);
    Writeln(F,'['+DateTimeToStr(Now())+']:'+content); //写入日志文件
    Closefile(F);
end;

在具体的操作后面调用就OK了

 

 在OA项目中,需要记录用户都进行了什么操作,事件包括增加、删除和修改,希望记录成类似以下格式:

用户XXX在2007年X月X日增加了一个产品类别XXX
用户XXX在2007年X月X日删除了一个用户XXX

现在请教大家,除了在增删改的时候另外再运行一个存储过程记录这些信息外,有没有其他什么更简单的方法啊,感谢赐教~~感谢参与~

——————解答:

用文本文件记录吧,用追加文本    我的习惯做法是在数据库中建立日志表。
再编写一些方法,在用户进行增删改查时触发。
向表中添加数据           

  可以考虑通过   HttpModule   统一处理,
但是,你得考虑如何捕获用户进行了什么操作


http://www.ppmy.cn/news/363439.html

相关文章

系统日志文件

系统日志默认保存在/var/log目录下 messages&#xff1a; 包括整体系统信息&#xff0c;其中也包含系统启动期间的日志。此外&#xff0c;mail&#xff0c;cron&#xff0c;daemon&#xff0c;kern和auth等内容也记录在var/log/messages日志中。dmesg&#xff1a; 包含内核缓冲…

Win10查看系统日志

最简单的方法右键开始&#xff0c;点击事件查看器。 效果如下。 之后研究一下系统日志的格式。 Windows事件日志中共有五种事件类型&#xff0c;所有的事件必须拥有五种事件类型中的一种&#xff0c;且只可以有一种。五种事件类型分为&#xff1a; 信息&#xff08;Informa…

系统日志开关

1.系统native日志打印不出来需要添加下面标签 在c文件最开始加&#xff0c;即在#include之前&#xff1a; #define LOG_NDEBUG 0 #define LOG_TAG "SoundPool" 或者 #ifdef LOG_TAG #undef LOG_TAG #define LOG_TAG "SoundPool" #endif #ifdef LOG_NDEBU…

系统日志的了解

一、什么是系统日志&#xff1f; 系统日志是记录系统中硬件、软件和系统问题的信息&#xff0c;同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因&#xff0c;或者寻找受到攻击时攻击者留下的痕迹。系统日志包括系统日志、应用程序日志和安全日志。 系统…

linux的系统日志

目录 一、日志文件的产生过程 二、产生的日志文件保存在哪儿 &#xff08;1&#xff09;文本日志&#xff08;rsyslong&#xff09; &#xff08;2&#xff09;二进制日志&#xff08;systemd-journald&#xff09; 三、日志存放规则的相关配置文件 四、把自定义文字&…

Linux系统日志 -

简介&#xff1a; rsyslog 系统日志管理 ---关心哪类程序---产生的什么日志 ---放到什么地方 logrotate 日志轮转 ---将大量的日志&#xff0c;分割管理&#xff0c;删除旧日志 一、任务一详解 1.处理日志的进程 第一类&#xff1a; rsyslogd&#xff1a;系统专职日志程序 处…

【操作系统】日志管理

文章目录 系统日志文件rsyslog 服务描述rsyslog日志类别日志信息等级rsyslog符号解释 日志文件轮询logrotate systemd-journaldsystemd-journald.servicejournalctl 查看 syslog日志分析syslog常见服务dmesg报错查看 系统日志文件 常见的日志文件 文件路径包含内容/var/log/aut…

系统日志记录

当我们搭建系统或者api 程序时&#xff0c;遇见报错的信息&#xff0c;做一个日志记录&#xff1b;现在很多优秀的第三方框架都已经集成了日志记录功能&#xff0c;如果不依赖框架也可以自己手写一个日志层。 一般处理日志的方式有三种 【1】&#xff1a;保存在本地txt 文本 【…