Tôi đang tìm kiếm đăng nhập C# và tôi không muốn thông điệp tường trình của mình dành bất kỳ thời gian xử lý nào nếu thông báo nằm dưới ngưỡng ghi nhật ký. Điều tốt nhất tôi có thể thấy log4net là kiểm tra ngưỡng SAU KHI đánh giá các tham số nhật ký.Thủ thuật hiệu suất cho C# Đăng nhập
Ví dụ:
_logger.Debug("My complicated log message " + thisFunctionTakesALongTime() + " will take a long time")
Thậm chí nếu ngưỡng là trên Debug, thisFunctionTakesALongTime sẽ vẫn được đánh giá.
Trong log4net bạn có nghĩa vụ phải sử dụng _logger.isDebugEnabled do đó bạn kết thúc với
if(_logger.isDebugEnabled)
_logger.Debug("Much faster")
Tôi muốn biết nếu có một giải pháp tốt hơn cho .net khai thác gỗ mà không liên quan đến một tấm séc mỗi khi tôi muốn để đăng nhập.
Trong C++ tôi được phép làm
LOG_DEBUG("My complicated log message " + thisFunctionTakesALongTime() + " will take no time")
từ vĩ mô LOG_DEBUG của tôi không mức độ log kiểm tra riêng của mình. Điều này giải phóng cho tôi để có một tin nhắn đăng nhập 1 dòng trong suốt ứng dụng của tôi mà tôi rất thích. Bất cứ ai biết một cách để nhân rộng hành vi này trong C#?
Nhưng nếu tôi đánh giá các chức năng để nhận thông báo tường trình, điều này có thể làm chậm không? Tôi muốn tránh tất cả các đánh giá chức năng nếu mức nhật ký thấp hơn ngưỡng của tôi. – Charles
Bạn đúng là bạn sẽ cần phải trì hoãn việc đánh giá chức năng.Xem bản cập nhật của tôi sử dụng một đại biểu ẩn danh. –
D'oh, đó cũng là câu trả lời của tôi. Tôi nên cảnh báo bạn rằng nếu bạn đang tìm kiếm tốc độ, bạn không muốn sử dụng các đại biểu. Bạn chỉ nên lấy hit và sử dụng nếu 'if (logger.isDebugEnabled)' xung quanh bất cứ thứ gì đắt tiền. Không có giải pháp nào vừa hiệu quả vừa tao nhã. – bobbymcr