Tôi đang cố tìm ai đó thông minh hơn tôi để xác thực một số cú pháp tôi đã viết. Ý tưởng là định cấu hình tên tệp của RollingFileAppender của tôi thành tên của hội đồng để làm cho nó có thể sử dụng lại nhiều hơn cho các dự án của tôi.Cách tốt nhất để tự động đặt đường dẫn tệp của người gắn thêm
Tôi đã nhìn thấy this previous SO article nhưng nó là không chính xác có thể trả lời câu hỏi của tôi ...
Tôi đã có một Dickens của một thời gian cố gắng tìm hiểu các thành phần bên trong của Log4net và đây là những gì tôi đã với (cư trú trong tập tin Global.asax - Phương pháp Application_Start):
// Bind to the root hierarchy of log4net
log4net.Repository.Hierarchy.Hierarchy root =
log4net.LogManager.GetRepository()
as log4net.Repository.Hierarchy.Hierarchy;
if (root != null)
{
// Bind to the RollingFileAppender
log4net.Appender.RollingFileAppender rfa =
(log4net.Appender.RollingFileAppender)root.Root.GetAppender("RollingLogFileAppender");
if (rfa != null)
{
// Set the file name based on the assembly name
string filePath =
string.Format("~/App_Data/{0}.log", GetType().Assembly.GetName().Name);
// Assign the value to the appender
rfa.File = Server.MapPath(filePath);
// Apply changes to the appender
rfa.ActivateOptions();
}
}
Bất cứ ai có thể cho tôi biết, 'điều này thật ghê tởm', hay 'điều này sẽ làm việc tốt'? Ngoài ra, nếu tôi đặt tập tin tự động tôi có thể vẫn mong đợi hành vi log4net để xoay các tập tin dựa trên các thiết lập tập tin log4net.config?
Được đánh giá cao!
Ah, chính xác lý do tại sao tôi đăng này ... Dường như khó khăn hơn nó cần phải có được. Cảm ơn bạn ... – Dscoduc
Bạn có biết nếu có một phương pháp tương đương hoặc cách để làm điều này khi sử dụng log4netfactoryadapter? Tôi đang sử dụng common.logging trong tất cả các mã của tôi và khai báo định nghĩa cấu hình (app.config). Tôi đã thử phương pháp GlobalContext nhưng kết thúc bằng (null) trong tên tệp của tôi và tôi biết biến tôi đang sử dụng không phải là rỗng. –
Thật không may, tôi không quen thuộc với log4netfactoryadapter. Bạn có chắc chắn bạn đang sử dụng GlobalContext ** trước khi ** log4net được khởi tạo hoặc sử dụng không? Nếu log4net được sử dụng hoặc được khởi tạo trước khi bạn xác định các thuộc tính của bạn, chúng sẽ bị vô hiệu. – Eddie