2012-11-29 21 views
7

Có một số trường hợp nhất định trong ứng dụng của chúng tôi khi xảy ra lỗi không nghiêm trọng và ứng dụng khôi phục.Có thể chấp nhận ghi vào Nguồn Sự kiện Ứng dụng không?

Ví dụ về việc này không xác định chính xác một số mục có thể nhập khi điền các mục được nêu vào danh sách lựa chọn. Các lỗi sẽ không làm hỏng ứng dụng nhưng người dùng sẽ được cảnh báo rằng một số mục không tải được.

Trong trường hợp này, lỗi được ghi vào Nhật ký sự kiện ứng dụng dưới dạng cảnh báo. Đó là một lỗi không nghiêm trọng mà ứng dụng phục hồi, nhưng việc đăng nhập vào nhật ký sự kiện cho phép chúng tôi thấy lỗi gốc nếu cần.

Vấn đề của chúng tôi là phần mềm cần có thể được cài đặt với tài khoản Người dùng quyền lực. Không phải là tài khoản quản trị, chúng tôi sẽ không có khả năng tạo nguồn sự kiện tùy chỉnh cho ứng dụng.

Mục đích là ghi các lỗi thay vào nguồn sự kiện "Ứng dụng" (đã tồn tại xuất hiện trong Nhật ký sự kiện ứng dụng). Tuy nhiên, việc này làm cho văn bản tương tự như sau đây cũng được bao gồm.

Không thể tìm thấy mô tả cho ID sự kiện 0 từ ứng dụng nguồn. Một trong những thành phần mà tăng sự kiện này không được cài đặt trên máy tính địa phương của bạn hoặc cài đặt bị hỏng. Bạn có thể cài đặt hoặc sửa chữa thành phần trên máy tính cục bộ.

Điều này là do EventID là 0 khi chúng tôi viết. Cách tiếp cận này sẽ hoàn thành công việc, nhưng có cách nào tốt hơn không? Có cách nào không phải quản trị viên để chỉ định EventID cho nguồn Sự kiện ứng dụng để cho biết rằng nó đến từ ứng dụng của chúng tôi?

Trả lời

0

Các lỗi mà bạn nhìn thấy như Không thể tìm thấy mô tả cho ID sự kiện 0 từ ứng dụng nguồn. Một trong những thành phần mà tăng sự kiện này không được cài đặt trên máy tính địa phương của bạn hoặc cài đặt bị hỏng. Bạn có thể cài đặt hoặc sửa chữa thành phần trên máy tính cục bộ. là kết quả của tệp tin sự kiện đã đăng ký của nguồn ứng dụng không có mục nhập cho id sự kiện 0. Thông báo bạn thấy là kết quả nhận mẫu cho id tin nhắn từ tệp tin sự kiện và định dạng nó bằng tải trọng sự kiện.

Tôi không khuyên bạn nên nói chung là bạn chiếm quyền sở hữu một nguồn bạn không sở hữu. Bất kỳ ai tiêu thụ những sự kiện đó đều có những kỳ vọng cụ thể về ý nghĩa của chúng và thông tin họ mang theo.

Về Có cách nào không phải quản trị viên để chỉ định EventID cho nguồn Sự kiện ứng dụng để cho biết rằng nó đến từ ứng dụng của chúng tôi?, bạn mong đợi gì về đặc điểm kỹ thuật id sự kiện có nghĩa là gì? Nguồn điều xác định nơi sự kiện đến từ đâu.

EDIT:

Bạn sẽ nhận được các lỗi trong event viewer cho dù bạn cung cấp một id kiện khác hơn 0, bởi vì nguồn mà không có một tập tin thông báo sự kiện đăng ký.Và ngay cả khi nó đã làm, bạn sẽ phải sử dụng id sự kiện có mục nhập trong tệp tin (gây nhầm lẫn cho người tiêu dùng của sự kiện) hoặc id sự kiện không có mục nhập và vẫn gặp lỗi.

+0

Tôi đã thực hiện một số đọc: EventID kết hợp với Nguồn sự kiện xác định loại sự kiện nào đang xảy ra. Tóm lại: Tôi không nhớ lỗi cảnh báo nhưng tôi không nên sử dụng nguồn mà tôi không tạo. Tôi không ở trong một vị trí để tạo một (cài đặt không phải quản trị viên vv), vì vậy tôi hy vọng sẽ tìm thấy nguồn sự kiện có sẵn cho các loại sự kiện này hoặc sử dụng một cơ chế khác để ghi nhật ký. Suy nghĩ? – MoSlo

+0

Nếu bạn đang sử dụng .NET 4.5, bạn có thể sử dụng lớp EventSource (http://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx) để ghi sự kiện vào ETW mà không cần đăng ký . Nhược điểm là các sự kiện không được lưu trong bản ghi sự kiện, vì vậy nếu bạn không chủ động lắng nghe những sự kiện đó bạn sẽ không nhận được chúng. – fsimonazzi

0

Bạn có thể vượt qua các sự kiện Application ID như một tham số: (ví dụ: 234)

EventLog.WriteEntry("Application", "your log message here", EventLogEntryType.Warning, 234); 

Tiếp tục đọc vào EventLog.WriteEntry Phương pháp

http://msdn.microsoft.com/en-us/library/xzwc042w.aspx

+1

Chỉ vì mục đích hoàn chỉnh, tôi cũng sẽ chỉnh sửa để thêm rằng * * là * OK để sử dụng nguồn sự kiện * Ứng dụng * như thế này. (trừ khi bạn không đồng ý rằng nó là OK, tất nhiên!) –

+0

"Ứng dụng" trong ví dụ đó là thông báo chứ không phải nguồn sự kiện. Nguồn sự kiện là "ứng dụng mẫu dotNET". public static void WriteEntry ( nguồn \t chuỗi, nhắn \t chuỗi, loại \t EventLogEntryType, \t int eventID ) – fsimonazzi

+0

này không được trả lời câu hỏi. Ngoài ra, kết quả này trong "Mô tả cho ID sự kiện 234 từ ứng dụng nguồn không thể tìm thấy .." – user2864740