惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
Scott Helme
Scott Helme
爱范儿
爱范儿
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
V
V2EX
腾讯CDC
博客园_首页
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
罗磊的独立博客
Recorded Future
Recorded Future
博客园 - 聂微东
O
OpenAI News
S
Secure Thoughts
Hacker News: Ask HN
Hacker News: Ask HN
S
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Project Zero
Project Zero
宝玉的分享
宝玉的分享
K
Kaspersky official blog
N
Netflix TechBlog - Medium
T
The Exploit Database - CXSecurity.com
Google Online Security Blog
Google Online Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Webroot Blog
Webroot Blog
云风的 BLOG
云风的 BLOG
Simon Willison's Weblog
Simon Willison's Weblog
C
Check Point Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
美团技术团队
L
Lohrmann on Cybersecurity

博客园 - Arthur_wuancheng(大步牛)

练手之作:易元威客任务发布系统(2) 练手之作:易元威客任务发布系统(1) 人生一世 草木一秋 如何进行高效的项目管理?(转) 项目管理的一点总结 极限编程法一点思考 WEB Service 下实现大数据量的传输 (转) 项目经验(转) Atlas 学习笔记: ajax 改进 by Atlas ajax for .net in vs2003 like gmail ^_^ 存储过程分页,以及动态sql(Sql server) C# 2.0 New Feature(1) WebService Enhancements 2.0 Learning Note ref type & out type Duwamish架构分析篇 (转) 程序编码应保持良好的规范(C#)(转) 也谈代码规范 (转) 如何用正确的方法来写出质量好的软件的75条体会 [转] 自己正在做电信的互联星空项目,里面用到的xml
How to Write to Database by EnterPriseLibrary2005 Logging Application Block(项目心得)
Arthur_wuancheng(大步牛) · 2005-07-04 · via 博客园 - Arthur_wuancheng(大步牛)

继续互联星空项目,因为用到log,并且是写到Database里面,不想自己实现.
到愿意看看那个EnterPriseLibrary2005,微软的东西,好像是一个论坛搞的(pattern && practice),不管用了在说

1.先把例子找出来看看,大家先看看界面把

2.再看看界面上(按钮Log event information)主要调用的类

看了以后大家也许都注意到了:LogEntry,Logger,
而Logger是静态的,

3.直接在解决方案里面加一个项目(我比较赖,而且这样也会避免一些不必要的错误)

我加的的是控制台程序(主要是为了test,因为以前没用过)
4.EnterPriseLibrary提供了一个好东西EntLibConfig.exe,(你可以在这个地址找到他C:\Program Files\Microsoft Enterprise Library\bin)这是一个配置文件生成工具,这样大家就不用一个劲的写
.config了^_^,先来看看界面

5.加一个application

6.在applicaiton1上点右键,我是建立的Logging block那项,
你可以看到2项,不要管configuration,
看logging and Instrumention Application Block ---------->Distributor Settring------->Sinks(看看这个下面有什么) event log sink 和 flat file sink这是干什么用的呢,想来从字面上我们也猜出几分了,我们可以看看logging and Instrumention Application Block ---------->Distributor Settring------->Categories------->General--------->点击Event Log那项,看看右边有什么!!!

那个sink我们在这儿找到了
7.现在,我们在sinks里面新建一个 Database Sink 程序加了一个 DataAccess Application Block

a.StoreProcName里面写上自己定义的存储过程名

b.DataAccess Application Block --------------------->Connection strings --------------->sql connection stirng ---------->里面的参数依照自己的来(我就出现过错误这里)

c. 在Event Log Destination,右边的那个sink 改为你新建的Database Sink 名字

8. 存储过程可以参考他给出的sql(C:\Program Files\Microsoft Enterprise Library\src\Logging\Sinks\Database\Scripts\LoggingDatabase.sql)

9.需要注意的地方
我是把项目加入然后取调试的,如果你们配置有问题要调试的话,要加入Logging.Sinks.Database项目,不要调试直接加入.dll

Logging.Sinks.Database项目里面有一个DatabaseSink.cs

        private void ExecuteStoredProcedure(LogEntry logEntry)
        
{
            DatabaseSinkData databaseSinkData 
= loggingConfigurationView.GetSinkData(ConfigurationName) as DatabaseSinkData;
            DatabaseProviderFactory factory 
= new DatabaseProviderFactory(loggingConfigurationView.ConfigurationContext);
            Data.Database db 
= factory.CreateDatabase(databaseSinkData.DatabaseInstanceName);
            DBCommandWrapper cmd 
= db.GetStoredProcCommandWrapper(databaseSinkData.StoredProcName);

            cmd.AddInParameter(
"eventID", DbType.Int32, logEntry.EventId);
            cmd.AddInParameter(
"category", DbType.String, logEntry.Category);
            cmd.AddInParameter(
"priority", DbType.Int32, logEntry.Priority);
            cmd.AddInParameter(
"severity", DbType.String, logEntry.Severity.ToString());
            cmd.AddInParameter(
"title", DbType.String, logEntry.Title);
            cmd.AddInParameter(
"timestamp", DbType.DateTime, logEntry.TimeStamp);
            cmd.AddInParameter(
"machineName", DbType.String, logEntry.MachineName);
            cmd.AddInParameter(
"AppDomainName", DbType.String, logEntry.AppDomainName);
            cmd.AddInParameter(
"ProcessID", DbType.String, logEntry.ProcessId);
            cmd.AddInParameter(
"ProcessName", DbType.String, logEntry.ProcessName);
            cmd.AddInParameter(
"ThreadName", DbType.String, logEntry.ManagedThreadName);
            cmd.AddInParameter(
"Win32ThreadId", DbType.String, logEntry.Win32ThreadId);
            cmd.AddInParameter(
"message", DbType.String, logEntry.Message);
            cmd.AddInParameter(
"formattedmessage", DbType.String, FormatEntry(logEntry));

            db.ExecuteNonQuery(cmd);
        }

调用执行存储过程时候的代码,如果你有需要可以改此代码

posted on 2005-07-04 19:38  Arthur_wuancheng(大步牛)  阅读(1745)  评论()    收藏  举报