2012-01-10 35 views
7

DotNetNuke có cung cấp bất kỳ khung công tác Ghi Lỗi Lỗi nào không? Khách hàng của tôi đang sử dụng DotNetNuke và tôi không thấy khung đăng nhập lỗi toàn cầu. Tôi thấy lớp dưới đây với một số try/catch's sử dụng chúng.DotNetNuke và Error Logging

namespace DotNetNuke.Services.Exceptions 
{ 
    [StandardModule] 
    public sealed class Exceptions 
    { 
     public static ExceptionInfo GetExceptionInfo(Exception e); 
     public static void LogException(Exception exc); 
     public static void LogException(ModuleLoadException exc); 
     public static void LogException(PageLoadException exc); 
     public static void LogException(SchedulerException exc); 
     public static void LogException(SecurityException exc); 
     public static void LogSearchException(SearchException exc); 
     public static void ProcessModuleLoadException(Control ctrl, Exception exc); 
     public static void ProcessModuleLoadException(PortalModuleBase objPortalModuleBase, Exception exc); 
     public static void ProcessModuleLoadException(Control ctrl, Exception exc, bool DisplayErrorMessage); 
     public static void ProcessModuleLoadException(PortalModuleBase objPortalModuleBase, Exception exc, bool DisplayErrorMessage); 
     public static void ProcessModuleLoadException(string FriendlyMessage, Control ctrl, Exception exc); 
     public static void ProcessModuleLoadException(string FriendlyMessage, Control ctrl, Exception exc, bool DisplayErrorMessage); 
     public static void ProcessModuleLoadException(string FriendlyMessage, PortalModuleBase objPortalModuleBase, Exception exc, bool DisplayErrorMessage); 
     public static void ProcessPageLoadException(Exception exc); 
     public static void ProcessPageLoadException(Exception exc, string URL); 
     public static void ProcessSchedulerException(Exception exc); 
    } 
} 

Trả lời

19

Log4Net có sẵn, nhưng hầu hết các module sử dụng lớp ngoại lệ tùy chỉnh trong DNN mà sẽ lưu trữ "sự kiện" trong bảng EventLog, bạn có thể truy cập báo cáo cho "sự kiện" bao gồm lỗi, từ trang Trình quản lý sự kiện/Trình quản lý sự kiện.

Thông thường trong mô-đun, bạn sẽ làm một việc như sau.

try 
{ 
    //STUFF HERE 
} 
catch (Exception exc) //Module failed to load 
{ 
    Exceptions.ProcessModuleLoadException(this, exc); 
} 
+0

Xin chào Chris, tôi thấy điều này trong mẫu của bạn và tôi rất vui vì tôi đã nghe để hiểu những gì nó thực sự đang làm. Trong câu hỏi OP có các định nghĩa hàm bao gồm 'FriendlyMessage'. Là trường này nhằm mục đích cho phép nhà phát triển ghi nhật ký chi tiết bổ sung hay đây là những gì được hiển thị cho người dùng khi lỗi xảy ra. Nếu nó không phải là một nơi để thông tin tùy chỉnh về ngoại lệ, là có? – RacerNerd

+0

@RacerNerd Tôi đã không thử sử dụng friendlymessage trước đây, nhưng tôi đoán nó sẽ là những gì hiển thị cho người dùng cuối khi có sự cố –

4

Nó đã được một thời gian dài kể từ khi bài gốc về vấn đề này và sau khi làm một số nghiên cứu cho bản thân mình Tôi tin rằng tôi tìm thấy một nguồn lực tốt hơn và gần đây hơn là câu trả lời chấp nhận. Thông tin sau đây bao gồm thêm một chút thông tin về cách để thiết lập và tích hợp Log4Net vào mô-đun của bạn, http://www.dnnsoftware.com/community-blog/cid/141723/Using-log4net-with-DotNetNuke.

Dường như một lợi thế khi sử dụng phương pháp Log4Net là khả năng định cấu hình mức ghi nhật ký để các ứng dụng có thể dễ dàng được điều tra và sửa lỗi hơn. Điều này có thể đặc biệt hữu ích khi di chuyển các ứng dụng giữa các môi trường. Tôi đã sử dụng điều này trong khi gỡ lỗi một ứng dụng trên một máy chủ mà tôi không thể đính kèm vào tiến trình và làm gián đoạn ứng dụng để gỡ lỗi. Tôi bật lên mức độ đăng nhập và làm việc với thông tin trong nhật ký. Điều này có thể là một cách đau đớn để gỡ lỗi, nhưng thực sự hữu ích khi bạn đang mắc kẹt.

Trong DNN 7, lớp DnnLog được đề cập ở đây bị khấu hao để có thể khám phá các giải pháp thay thế.

Dường như lớp ngoại lệ tùy chỉnh dành cho các trường hợp ngoại lệ cần phải đăng nhập trong tất cả các trường hợp. Tôi tìm thấy bài viết hơi cũ này có khả năng vẫn còn liên quan nếu có nhu cầu đăng nhập thông tin tùy chỉnh, http://www.ifinity.com.au/Blog/EntryId/114/Creating-Exception-Logging-with-DotNetNuke. Một số lớp học sẽ cần được cập nhật nhưng kỹ thuật tổng thể có vẻ tốt và phù hợp hơn với đề xuất của Chris ở trên. Với một chút chỉnh sửa ví dụ này có thể được sử dụng để thực hiện một mức độ ghi cấu hình.

+0

Bạn có thể sử dụng DnnLogger hoặc LoggerSource trong DNN 7: http://stackoverflow.com/a/ 19237590/443379 – Valentin

0

hiểu biết của tôi là bạn có các tùy chọn sau: Trường hợp ngoại lệ lớp