C#记录软件的操作日志

hanzhaoever 2010-02-02 10:52:18
我现在使用log4net,在winform已经中配置完app.config,在program.cs中代码

static void Main()
{

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
#region
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
//记录错误日志
log.Error("error", new Exception("发生了一个异常"));
//记录严重错误
log.Fatal("fatal", new Exception("发生了一个致命错误"));
//记录一般信息
log.Info("info");
//记录调试信息
log.Debug("debug");
//记录警告信息
log.Warn("warn");

#endregion

现在的记录结果是
记录时间:2010-02-02 10:40:54,140 线程ID:[10] 日志级别:FATAL 出错类:Super_Mip.Program property:[(null)] - 错误描述:fatal
System.Exception: 发生了一个致命错误
记录时间:2010-02-02 10:40:54,140 线程ID:[10] 日志级别:INFO 出错类:Super_Mip.Program property:[(null)] - 错误描述:info
记录时间:2010-02-02 10:40:54,140 线程ID:[10] 日志级别:DEBUG 出错类:Super_Mip.Program property:[(null)] - 错误描述:debug
记录时间:2010-02-02 10:40:54,140 线程ID:[10] 日志级别:WARN 出错类:Super_Mip.Program property:[(null)] - 错误描述:warn

我想记录每一个操作的,如:添加人员信息,记录是由谁在什么时候操作的,
这个怎么做?
...全文
2135 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
vssvss 2010-02-05
  • 打赏
  • 举报
回复
写log的好处就是查错 有时候程序要运行很久 有可能中间某个地方有bug 这样你就可以在跑完后看log文档 就知道哪里有bug了 目前我写的下载和更新程序的log都是自己手动写的 就是写到txt里面 最简单的log日志
zw_548498 2010-02-02
  • 打赏
  • 举报
回复
没用过log4net,关注一下
heronexus 2010-02-02
  • 打赏
  • 举报
回复
你报错信息自己FORMAT()一下!
wuyq11 2010-02-02
  • 打赏
  • 举报
回复
public static readonly log4net.ILog loginfo =
log4net.LogManager.GetLogger("loginfo");
public static readonly log4net.ILog logerror =
log4net.LogManager.GetLogger("logerror");
if(loginfo.IsInfoEnabled)
loginfo.Info("");
jcrsjcrs 2010-02-02
  • 打赏
  • 举报
回复
使用,log以及debug函数
hanzhaoever 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 whb147 的回复:]
那就用模板
在母板里定义一个变量
在子板里每次都要给这个变量赋值,告诉母板这个页面是干什么的
那样你就可以记录了
[/Quote]
说详细点,最好有代码,谢谢!
Keep-Learning 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 hanzhaoever 的回复:]
我想记录每一个操作的,如:添加人员信息,记录是由谁在什么时候操作的,
这个怎么做?

[/Quote]


你要是说这样的记录,应该再建个表吧,专门记录用户的操作(添加,删除,更新等等)
whb147 2010-02-02
  • 打赏
  • 举报
回复
那就用模板
在母板里定义一个变量
在子板里每次都要给这个变量赋值,告诉母板这个页面是干什么的
那样你就可以记录了
hanzhaoever 2010-02-02
  • 打赏
  • 举报
回复
自己sf
hanzhaoever 2010-02-02
  • 打赏
  • 举报
回复
问题解决了 我写到txt中了 谢谢大家
wuzhicheng5 2010-02-02
  • 打赏
  • 举报
回复
在你需要添加操作日志的地方,都加上Add_OpeLog函数,并传入相关参数!

希望你现在明白了!

提醒:你可以把Add_OpeLog封装成一个公共类的一个公共方法,节省资源!
wuzhicheng5 2010-02-02
  • 打赏
  • 举报
回复

--根据你的情况建立 tbOperateLog操作日志表,以下是sql脚本
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tbOperateLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tbOperateLog]
CREATE TABLE [dbo].[tbOperateLog]
(
[Id] int IDENTITY (1, 1) NOT NULL PRIMARY KEY, --自增id
[Operator_Id] int NOT NULL , --操作员Id号
[Model_Name] varchar(20) NOT NULL, --操作模块名称
[DateT] DateTime NOT NULL, --日期时间
[Description] varchar(100) not NULL --操作描述信息
)




//添加操作日志,举例,权限分配按钮事件中
Add_OpeLog(Operator.Id, "权限分配", System.DateTime.Now, "操作员 (" + Operator.Name + ") 给角色 " + RoleName + " 重新分配了权限");
// 函数中四个参数分别对应日志表中的四个字段

hanzhaoever 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuzhicheng5 的回复:]
    楼主要写操作日志,何必还用别人的控件或类?自己写一个,可控制,可预期,利己利人!日志中主要包含时间、操作人、操作模块、操作描述四个参数,建立一个相应的表,在你程序里对应需要记录操作日志的地方,插入一条日志记录到表中,就形成了自写操作日志!
[/Quote]
我也想自己写 可是我不明白这是一个怎么样的过程,怎么样一个原理,我怎么才能记录我点击每个按钮的事件,你有好的例子么?可以发一份给我么?或者给我点有意义的连接之类的.
灵雨飘零 2010-02-02
  • 打赏
  • 举报
回复
接分

帮顶
wuzhicheng5 2010-02-02
  • 打赏
  • 举报
回复
应用程序日志主要分两种:

1.系统运行日志
2.系统操作日志



运行日志主要记录系统的运行情况,针对一些主要线程,主要函数,主要操作,等等,记录程序走的一些关键路线,一般写成.log文件格式,这个日志在系统出现异常或启动不了等情况的时候,非常有用,尤其是你的系统需要和别的外部软件对接的时候,可以用来查询毛病,检查在那里出来错,导致系统崩溃或启动不了。


操作日志,主要是记录操作员在本系统的一些日常操作,参数配置,信息修改等等,目的在于管理和责任追查等,存储形式一般为数据库表,当然也有文件存储的,txt或xml都可以。


楼主要写操作日志,何必还用别人的控件或类?自己写一个,可控制,可预期,利己利人!日志中主要包含时间、操作人、操作模块、操作描述四个参数,建立一个相应的表,在你程序里对应需要记录操作日志的地方,插入一条日志记录到表中,就形成了自写操作日志!


以上意见,希望对楼主有帮助!
hanzhaoever 2010-02-02
  • 打赏
  • 举报
回复
网上的讲解看的迷迷糊糊的!
huing 2010-02-02
  • 打赏
  • 举报
回复
相当于printf函数
hanzhaoever 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 vssvss 的回复:]
我都是自己手动写log文件的 还有log4net这东西啊 学习了
[/Quote]
我现在不太明白 写日志的原理是什么?能解释下么?为什么我没操作一步就记录了
hanzhaoever 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
public static readonly log4net.ILog loginfo =
log4net.LogManager.GetLogger("loginfo");
public static readonly log4net.ILog logerror =
log4net.LogManager.GetLogger("logerror");
if(loginfo.IsInfoEnabled)
loginfo.Info("");

[/Quote]

这个写在哪里
vssvss 2010-02-02
  • 打赏
  • 举报
回复
我都是自己手动写log文件的 还有log4net这东西啊 学习了

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧