2010-07-19 36 views
11

Tôi hiện đang tìm một số mã hoặc một công cụ/dịch vụ cho phép tôi lưu trữ thông điệp Log4Net trong cơ sở dữ liệu SQL Server. Có một cái gì đó như thế này đã tồn tại hoặc tôi sẽ phải thực hiện điều này một mình? Tôi không thể tìm thấy bất kỳ thứ gì trên SO hoặc Google.Lưu trữ thông điệp Log4Net trong SQL Server

Cảm ơn trước vì bất kỳ thông tin nào.

+0

Bạn có thể sử dụng adonetappender để lưu trữ log4net vào cơ sở dữ liệu máy chủ sql, kiểm tra bài viết hay này về cơ sở dữ liệu log4net http://goo.gl/Jf9CkH – virender

Trả lời

19

Bạn có thể tìm hiểu về này trong manual

Cũng là một tốt blog về vấn đề sử dụng log4net với các bản ghi lưu trong một cơ sở dữ liệu.

+0

+1 cho trả lời gián tiếp câu hỏi, trong khi vẫn cung cấp cho tôi sự hài hước hàng ngày – PostMan

+0

Gee bạn rất đúng, xin lỗi tôi totaly giám sát rằng một, thời gian cho một cà phê tôi đoán .. – Mark

+0

Không vấn đề, tôi đang cố gắng nhớ nếu có bất cứ điều gì để xem ra cho ... thực sự, có cái gì đó trên blog.stackoverflow.com, sẽ đào sâu hơn nữa ... – si618

12

Điều gì gây rối với mọi ngườisao chép/dán mà không biết chi tiết.Ví dụ: <bufferSize value="100" /> Điều đó có nghĩa rằng nó SẼ KHÔNG đăng nhập bảng cơ sở dữ liệu cho đến khi nó chạm 100 mục trong bộ đệm ghi vào bảng db.

Để thử nghiệm/debug bộ đệm tới 1

Thông báo Window xác thực cùng với . cho địa phương

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
    <bufferSize value="1" /> <!--Change to 10 or MORE This is critical , after 10 messages then log to database--> 
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    <!--<connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />--> 
    <connectionString value="data source=.;initial catalog=InternTracking;integrated security=true;" /> 
    <commandText value="INSERT INTO InternLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
    <commandType value="Text"/> 
    <!--<commmandText value="dbo.procLog_Insert"/> 
    <commandType value="StoredProcedure"/>--> 
    <parameter> 
    <parameterName value="@log_date" /> 
    <dbType value="DateTime" /> 
    <layout type="log4net.Layout.RawTimeStampLayout" /> 
    </parameter> 
    <parameter> 
    <parameterName value="@thread" /> 
    <dbType value="String" /> 
    <size value="255" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%thread" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@log_level" /> 
    <dbType value="String" /> 
    <size value="50" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%level" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@logger" /> 
    <dbType value="String" /> 
    <size value="255" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%logger" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@message" /> 
    <dbType value="String" /> 
    <size value="4000" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%message" /> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@exception" /> 
    <dbType value="String" /> 
    <size value="2000" /> 
    <layout type="log4net.Layout.ExceptionLayout" /> 
    </parameter> 
</appender> 

Tiếp theo, bạn sẽ sử dụng app.config hoặc web.config "gốc" để có nó được gọi là

<root> 
    <level value="DEBUG" /> 
    <!--<appender-ref ref="FileAppender"/>--> 

    <appender-ref ref="AdoNetAppender"/> 
</root> 
+0

Điều gì sẽ xảy ra khi chấm dứt sớm hoặc không mong muốn sau đó đến các giá trị trong bộ đệm? tức là nếu chỉ có 50 và không đủ 100. Họ có bị gửi hoặc bị mất không? – Mdev

+0

@Mdev - Tôi khá chắc chắn rằng họ không bị mất. Tôi quên cách chúng được lưu giữ/giữ lại cho đến khi đạt được số bộ đệm. Xin lỗi - hãy cho tôi biết nếu bạn tìm thấy câu trả lời - Tôi đã chuyển sang một dự án khác mà không có tôi xử lý mọi đăng nhập, v.v. –

+0

Tôi đã đăng nhập stackoverflow để cung cấp cho bạn +1 :) –

Các vấn đề liên quan