1. 程式人生 > >Enterprise Library Library Logging Application Block 記錄日誌到資料庫中

Enterprise Library Library Logging Application Block 記錄日誌到資料庫中

      這種例子在網上多的很,我只講一點基礎的實現。

      微軟企業庫文件中提到了將日誌記錄到資料庫中,但是,並沒有講到如何實現。小弟現在實現一下,既然要記錄到資料庫中,當然要在資料庫中建相關的資料表了。以下是我在建日誌表的程式碼

USE [ZCOA]
GO
/****** 物件:  Table [dbo].[tbl_syslog]    指令碼日期: 10/24/2009 09:56:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[
tbl_syslog

](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [EventId] [int] NULL,
    [Priority] [int] NULL,
    [Category] [varchar](1000) COLLATE Chinese_PRC_CI_AS NULL,
    [Title] [varchar](500) COLLATE Chinese_PRC_CI_AS NULL,
    [Message] [varchar](1000) COLLATE Chinese_PRC_CI_AS NULL,
    [Machine] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
    [Timestamps] [smalldatetime] NULL,
    [Severity] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
    [ApplicationDomain] [varchar](1000) COLLATE Chinese_PRC_CI_AS NULL,
    [ProcessId] [int] NULL,
    [ProcessName] [varchar](500) COLLATE Chinese_PRC_CI_AS NULL,
    [Win32ThreadId] [int] NULL,
    [ThreadName] [varchar](500) COLLATE Chinese_PRC_CI_AS NULL,
    [ExtendedProperties] [varchar](1000) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY CLUSTERED
(
    [id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

          按照以上程式碼的格式,在您的資料庫中建立相關的日誌表。然後,我將使用儲存過程來記錄日誌。以下是儲存過程的建立程式碼:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[WriteLog]
(
    @EventId                int,
    @Priority                int,
    @Title                    varchar(500),
    @Message                varchar(4000),
    @machineName            varchar(100),
    @Timestamp                smalldatetime,
    @Severity                varchar(100),
    @AppDomainName            varchar(1000),
    @ProcessId                int,
    @ProcessName            varchar(500),
    @Win32ThreadId            int,
    @ThreadName                varchar(500),
    @formattedmessage        varchar(4000),
    @LogId                    int    out
)
as
begin

    insert into aspnet_entlog
    (
        EventId,
        Priority,
        Title,
        Message,
        Machine,
        Timestamps,
        Severity,
        ApplicationDomain,
        ProcessId,
        ProcessName,
        Win32ThreadId,
        ThreadName,
        ExtendedProperties
    )
    values
    (
        @EventId,
        @Priority,
        @Title,
        @Message,
        @machineName,
        @Timestamp,
        @Severity,
        @AppDomainName,
        @ProcessId,
        @ProcessName,
        @Win32ThreadId,
        @ThreadName,
        @formattedmessage
    )
    set @

[email protected]@identity
end
       到這個時候,我們就完成了資料庫方面的工作。餘下的任務就是資料訪問了。Enterprise Library 提供了資料訪問應用程式塊,如果不熟悉的朋友可以看看我寫的資料訪問,呵呵!其實也是別人的東西,我搬了不少。下面我將寫日誌的LogWriter.cs的程式碼也貼出來:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Practices.EnterpriseLibrary.Logging;

namespace ZCOA.Web
{
    public class LogWriter
    {
        public string writeLog(int eventID,string message,string catagory,int priority,string appDomainName,string Title)
        {
            LogEntry log = new LogEntry();
            log.EventId = eventID;
            log.Message = message;
            log.Categories.Add(catagory);
            log.Priority = priority;
            log.TimeStamp = DateTime.Now;
            log.MachineName = HttpContext.Current.Request.UserHostAddress.ToString(); //記錄IP
            //log.Severity =
            log.AppDomainName = appDomainName;
            log.Title = Title;
            Logger.Write(log);
            return "OK";
        }
    }
}

      配置Web.Config檔案

     步驟一:使用Edit Enterprise Library Configuration工具開啟專案的Web.config檔案,或者是App.config檔案。

     步驟二:新增Logging Application Block到Web.config檔案中

     步驟三:新增Database Trace Listener,右鍵單擊Trace Listeners節點,選擇“New”-->"Database Trace Listener"。

     步驟三:設定Database Trace Listener的屬性。在DatabaseInstance右邊的下拉列表中選擇你要記錄日誌的資料庫連線字串(前提是您已經在Data Access Application Block 中新建了連線字串),在AddCategoryStoredProcedure欄輸入儲存過程名。

        O(∩_∩)O~,完成。

相關推薦

Enterprise Library Library Logging Application Block 記錄日誌資料庫

      這種例子在網上多的很,我只講一點基礎的實現。       微軟企業庫文件中提到了將日誌記錄到資料庫中,但是,並沒有講到如何實現。小弟現在實現一下,既然要記錄到資料庫中,當然要在資料庫中建相關的資料表了。以下是我在建日誌表的程式碼 USE [ZCOA] GO /*

使用.NetCore自帶Logging+log4net provider記錄日誌

1. 引用類庫 Nuget新增類庫Microsoft.Extensions.Logging.Log4Net.AspNetCore 2. 新增配置檔案 新增log4net.config檔案 <?xml version="1.0" encoding="utf-8"?>

mysql檢視某一條記錄資料庫是第幾條

操作資料的時候,中間需要斷開一次,但表中資料id是不連續的 ,為了下次執行從所斷掉的id處開始,所以記錄斷開時的id:416641,檢視這條資料在資料庫表中是第幾條: SELECT count(*)

查詢某條記錄資料庫是 第幾行

例子: 查詢hotelcode 為1942957 的記錄在資料庫中是第幾行 select tt.rn, tt.* from(select t.*, rownum rn from gds.t_falc

Enterprise Library Validation Application Block Step by Step (3)

Demo3 使用客戶自定義驗證 客戶自定義驗證是程式開發人員對Validation Application Block 的功能的擴充套件。 任務1 :搭建用於驗證的執行環境 1. 新建專案ValidationApp.CustomerValidation

Python logging模塊使用配置文件記錄日誌

efm ror 我們 time BE cname image interval -h 推薦用法 在項目中推薦使用按照時間的滾動日誌記錄方式,並使用配置文件進行日誌記錄配置。這樣有很多好處:不會讓日誌文件無限變大,很容易實現保留最近N天日誌的功能,需要修改日誌記錄規則直接改配

django 使用logging記錄日誌

  django使用logging記錄日誌,我沒有用這方式去記錄日誌,主要還是專案小的原因吧, 有機會遇見大專案的話可以回頭研究. 配置setting.py配置檔案 import logging import django.utils.log import logging.handl

python3單獨記錄日誌使用logging模組

import logging logger = logging.getLogger(__name__) logger.setLevel(level=logging.ERROR) handler = logging.FileHandler("日誌檔案路徑") logger.addHandler(h

Scrapy框架的學習(4.scrapylogging模組記錄日誌檔案以及普通的專案使用)

 logging模組使用     為了讓我們自己希望輸出到終端的內容能容易看一些:             我們可以在setting中設定log級別    

Linux(Ubuntu)系統下安裝Qt library和Qt Creator全過程記錄

       Qt作為跨平臺的C++圖形使用者介面庫,可以說是功能強大、應用廣泛。相關的教程和資料,網上隨便一搜都是一大堆,可是,絕大部分的資料都是比較舊的,2012年之前的,很少有2013年之後的,更不用說最近兩年的最新資料。於是,我下載了Qt的最新版本原始碼, 同時參考著一些舊的資料,將全部安裝和使用過

Java使用Log4記錄日誌

.gz string erro error console 操作 config 信息 pat 我們在系統使用中,為了方便查找問題,因此需要記錄操作的日誌,而目前比較成熟穩定的程序日誌記錄方式就是Log4,本人也是菜鳥,然後再學習研究中就記錄一下使用方式,以方便今後查閱,同時

記錄日誌

spa ret name file 具體實現 con logs 代碼 fclose 簡單的日誌記錄:   思路:寫一個日誌記錄的類,每當需要記錄日誌的時候就去調用就行了;      具體實現,首先具備一些基本的文本操作知識,fopen(),fwrite(),fclose()

Spring使用Log4j記錄日誌

() 歸檔 msg 含義 多個 appenders policy rop git 以下內容引用自http://wiki.jikexueyuan.com/project/spring/logging-with-log4j.html: 例子: pom.xml: <

C# 記錄日誌

datetime appdomain als pac ide dom con gen pla /// <summary> /// 日誌部分 /// </summary> /// <

spring aop記錄日誌

spring aop記錄日誌 <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>

log4j記錄日誌 和 webAppRootKey關系

一個 pre nbsp ror 文件的 mes 不一致 兩個 bsp 今天發現一個問題,就是後臺從某天開始不再記錄日誌了,最後發現是 webAppRootKey 的 value 的值必須要和log4j的註入變量要一致。 如下:web.xml文件的 webAppRootKey

SecureCRT自動記錄日誌

會話 路徑 dev 輸入 一個 nbsp mage href 參數 From: http://lzj0470.iteye.com/blog/1189368 今天在推特上看到有人談起SecureCRT日誌記錄的問題,貌似很多人都有這習慣 我是開始工作後才使用SecureCR

如何記錄日誌

spa 超過 tps medium tid 實踐 pan err war 如何確定日誌的級別 日誌的分類 診斷日誌、統計日誌、審計日誌 RequestID 在RequestID中盡量編碼更多的信息 將一個請求的整個處理流程和唯一的requestID關聯

EntityFramework的多種記錄日誌方式,記錄錯誤並分析執行時間過長原因(系列4)

tab parameter height 優化 系統 環境 build ado.net 所有 Entity Framework 延伸系列目錄 今天我們來聊聊EF的日誌記錄. 一個好的數據庫操作記錄不僅僅可以幫你記錄用戶的操作, 更應該可以幫助你獲得效率低下的語句來幫你提高

編寫一個簡單登錄驗證需要記錄日誌,Servlet的Cookie

cookie java servlet j2ee javaweb 登錄驗證並記錄日誌之前介紹了如何使用Server、mysql、tomcat等知識點編寫了一個簡單的登錄驗證。但是現在有了一個新的需求,我想要在登錄成功的時候往數據庫記錄一條日誌,登錄失敗的時候也要記錄一下。這個日誌要記錄用戶