Tôi đang cố gắng tạo giải pháp ghi nhật ký liên quan đến nhiều quy trình trên nhiều máy. Tôi đã lên kế hoạch sử dụng UDPAppender để gửi tất cả các thông điệp tường trình tới một máy duy nhất có thể quản lý chúng. Tôi có một vài câu hỏi về patternstrings vs patternlayouts.thông tin id quá trình log4net
Vì tôi cần biết cả máy nào và quá trình xử lý thông điệp tường trình đó đến từ đâu, tôi cũng muốn bao gồm thông tin đó trong nhật ký. Tôi đã tìm thấy% thuộc tính {log4net: Tên máy chủ} cho tên máy chủ và hoạt động tốt. Tuy nhiên, tôi không thấy bất cứ điều gì cho id quá trình trong PatternLayouts. Tôi làm, tất nhiên, thấy một cái gì đó như thế trong PatternString. Từ FAQ:
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="log-file-[%processid].txt" />
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
</appender>
Nhưng tôi không chắc chắn nếu hoặc làm thế nào để trộn và kết hợp hai (hoặc thậm chí nếu điều này là cách kinh điển để làm như vậy).
Vì vậy, câu hỏi của tôi là:
sự khác biệt giữa PatternString và PatternLayout là gì? Tại sao có cả hai?
Tôi thấy% processid trong PatternString, làm thế nào để tôi nhận được điều tương tự trong PatternLayout? Đây là bố cục thử nghiệm của tôi:
<layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] [%property{log4net:HostName}] %-5level %logger - %message%newline" /> </layout>
Cuối cùng, bạn nên sử dụng bố cục XML cho trình bổ sung UDP. Có vẻ như XmlLayoutSchemaLog4j đã thêm HostNameProperty vào thông báo XML. Nếu tôi không muốn thêm ID tiến trình mới này (và có thể là Process Name) vào thông báo XML, cách tốt nhất để làm điều này là gì? Tôi có nên chỉ cần sao chép src \ Layouts \ XmlLayoutSchemaLog4j.cs, sửa đổi nó, và để cho log4net biết rằng tôi đã tạo Layout mới này (như SampleLayoutsApp)?
Nhờ sự giúp đỡ của bạn
thử tất cả mọi thứ% pid,% ProcessID và nhiều hơn nữa, không có gì làm việc. Giải pháp của bạn hoạt động. Cảm ơn. – Nemo