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

推荐订阅源

GbyAI
GbyAI
T
Tenable Blog
Webroot Blog
Webroot Blog
L
Lohrmann on Cybersecurity
S
Securelist
S
Schneier on Security
NISL@THU
NISL@THU
Know Your Adversary
Know Your Adversary
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
L
LINUX DO - 热门话题
C
CXSECURITY Database RSS Feed - CXSecurity.com
O
OpenAI News
I
Intezer
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
TaoSecurity Blog
TaoSecurity Blog
S
Secure Thoughts
Application and Cybersecurity Blog
Application and Cybersecurity Blog
P
Privacy International News Feed
H
Hacker News: Front Page
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
博客园 - Franky
PCI Perspectives
PCI Perspectives
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Azure Blog
Microsoft Azure Blog
MongoDB | Blog
MongoDB | Blog
L
LangChain Blog
P
Proofpoint News Feed
S
Security Affairs
WordPress大学
WordPress大学
The Last Watchdog
The Last Watchdog
S
SegmentFault 最新的问题
小众软件
小众软件
F
Full Disclosure
博客园 - 叶小钗
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
The Blog of Author Tim Ferriss
Simon Willison's Weblog
Simon Willison's Weblog
P
Palo Alto Networks Blog
Security Latest
Security Latest
P
Proofpoint News Feed
月光博客
月光博客
T
Tailwind CSS Blog
Scott Helme
Scott Helme
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google Online Security Blog
Google Online Security Blog
T
Threat Research - Cisco Blogs
Help Net Security
Help Net Security
Project Zero
Project Zero

博客园 - 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)  评论()    收藏  举报