2008-10-02 30 views
34

Tôi đang sử dụng Log4Net với AdoNetAppender để ghi thông điệp từ một ứng dụng systray đơn giản vào cơ sở dữ liệu SQL Server 2005.Làm thế nào để bạn đăng nhập tên máy thông qua log4net?

Tôi muốn đăng nhập tên máy cùng với thông điệp tường trình vì ứng dụng này sẽ chạy trên nhiều máy và tôi cần biết thông điệp nào bắt nguồn từ đó.

Nhưng, tôi không thể tìm cách để hiển thị thông tin này thông qua log4net.Layout.PatternLayout mà tôi đang sử dụng với trình bổ sung.

Có cách nào để đăng nhập tên máy qua log4net theo cách này không?

Trả lời

72

Bạn có thể sử dụng được phổ biến trước tài sản log4net:HostName, ví dụ:

<conversionPattern value="%property{log4net:HostName}" /> 

Bằng cách này bạn không cần phải điền MDC.

+1

Đối với người đọc trong tương lai, tôi đã nhận AdoNetAppender để làm việc với granadaCoder

+1

Người đọc trong tương lai. Tôi nghĩ rằng điều này xuất phát từ FIELDS trên trang này: http://logging.apache.org/log4net/release/sdk/html/T_log4net_Core_LoggingEvent.htm – granadaCoder

11

bạn có thể tạo một tham số tương tự như sau:

<parameter> 
    <parameterName value="@machine" /> 
    <dbType value="String" /> 
    <size value="255" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%X{machine}" /> 
    </layout> 
</parameter> 

Sau đó, thêm dòng này trước khi viết vào nhật ký: MDC.Set("machine", Environment.MachineName);

+0

Điều đó hoạt động hoàn hảo. Tôi biết nó phải là một cái gì đó đơn giản. Cảm ơn. –

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