Không có tài sản Priority
trên lớp Logger
trong log4net. Ví dụ duy nhất của Priority
Tôi có thể tìm thấy trong số SmtpAppender
. Vì vậy, vào mã tôi đã đi!
Trong phương pháp ParseChildrenOfLoggerElement
của XmlHierarchyConfigurator
bạn sẽ tìm thấy đoạn mã sau:
if (xmlElement.LocalName == "level" || xmlElement.LocalName == "priority")
{
this.ParseLevel(xmlElement, log, isRoot);
}
Ah! Cả hai giá trị được giải quyết cho cùng một thuộc tính (phương thức ParseLevel
không thực sự làm được gì nhiều, ngoài việc gán, ghi nhật ký và quản lý giá trị "kế thừa" là mức có thể) để bạn có nó; "mức" và "ưu tiên" có cùng tác dụng chính xác với cấu hình của bạn. Tôi đoán này đã được thực hiện để giữ một số loại khả năng tương thích ngược với các phiên bản trước của thư viện, mà là trong thực tế được hỗ trợ bởi this article about log4j:
Trong các phiên bản đầu tiên của log4j, chúng được gọi là thể loại và ưu tiên, nhưng bây giờ chúng được gọi là logger và cấp độ, tương ứng.
Thật vậy, nếu chúng ta tìm kiếm cho "thể loại", có một phương pháp Configure
trong XmlHierarchyConfigurator
chứa đoạn mã sau:
// ...
XmlElement xmlElement = (XmlElement)xmlNode;
if (xmlElement.LocalName == "logger")
{
this.ParseLogger(xmlElement);
}
else
{
if (xmlElement.LocalName == "category")
{
this.ParseLogger(xmlElement);
}
else
{
if (xmlElement.LocalName == "root")
{
this.ParseRoot(xmlElement);
}
// ...
Vì vậy, đó là nó: Trình độ và ưu tiên là hoán đổi cho nhau, cũng như các logger và danh mục.
Thú vị miếng ngon: tài sản cuối cùng thắng, và không có giới hạn về số lượng tài sản mà bạn có thể có trên logger, vì vậy đây là hợp lệ và sẽ thiết lập mức độ để gỡ lỗi
<root>
<priority value="ALL" />
<priority value="ERROR" />
<level value="DEBUG" />
</root>
Wow. Cảm ơn. Và, "món ngon của bạn" giải thích bí ẩn tiếp theo của tôi. Một trong các tệp cấu hình kế thừa của tôi có hai phần tử ưu tiên dưới gốc. Tôi cho rằng "tài sản cuối cùng thắng" và thử nghiệm đã được xác thực, nhưng cảm ơn vì sự thấu hiểu. –
Bạn được chào đón, đó là một chút phân tích thú vị và tôi đã có một số gợi ý về phân tích cấu hình từ câu trả lời này: http://stackoverflow.com/questions/23634472/using-ioc-in-a-custom-log4net -appender/23649446 # 23649446 – samy