2009-09-08 13 views
23

Chúng tôi có một Nhật ký SQL duy nhất để lưu trữ lỗi từ nhiều ứng dụng. Chúng tôi đã tắt trang elmah.axd cho từng ứng dụng của chúng tôi và muốn có ứng dụng mới hiển thị lỗi cụ thể từ tất cả các ứng dụng báo cáo lỗi cho nhật ký SQL chung.Sử dụng duy nhất Elmah.axd cho nhiều ứng dụng với nhật ký DB đơn

Hiện tại, mặc dù ứng dụng cho tất cả các lỗi đang sử dụng nhật ký SQL chung, nó chỉ hiển thị lỗi từ ứng dụng hiện tại. Có ai làm điều này trước khi? Những gì trong mã elmah có thể cần phải được tinh chỉnh?

+1

Cảm ơn bạn đã đặt câu hỏi như vậy một cách rõ ràng, bạn đã thực hiện các từ của tôi bằng máy Thời gian. Gần 6-7 năm sau. – AKS

Trả lời

30

Tôi giả định bởi "Nhật ký SQL" nghĩa là MSSQL Server ... Nếu vậy, có lẽ cách dễ nhất để hoàn thành những gì bạn muốn là chỉnh sửa các thủ tục được lưu trữ được tạo trong cơ sở dữ liệu SQL Server.

Để có được danh sách lỗi, ELMAH dll gọi proc ELMAH_GetErrorsXML với tên ứng dụng như một tham số, sau đó các proc lọc sự trở lại với một điều khoản WHERE [Application] = @Application.

Chỉ cần xóa mệnh đề WHERE khỏi ELMAH_GetErrorsXML proc và tất cả các lỗi phải được trả lại bất kể ứng dụng.

Để nhận được một bản ghi lỗi duy nhất đúng cách, bạn sẽ phải thực hiện tương tự với ELMAH_GetErrorXML proc, vì nó cũng lọc theo ứng dụng.

Điều này, tất nhiên, sẽ ảnh hưởng đến bất kỳ ứng dụng nào lấy lỗi ra khỏi cơ sở dữ liệu cụ thể này, nhưng tôi cho rằng trong trường hợp của bạn, bạn sẽ chỉ có một, vì vậy điều này sẽ tốt.

caveat: Tôi đã không cố gắng này, vì vậy tôi không thể đảm bảo kết quả ...

+0

Chính xác! Tôi sẽ xem xét các sửa đổi sproc. – RSolberg

+1

@ E.King, Cảm ơn câu trả lời của bạn hoạt động như một sự quyến rũ ... – AKS

2

Vâng, nó dễ dàng hoạt động. Tuy nhiên bạn không thể thấy tên ứng dụng trong Elmah/Default.aspx. Tôi đã không tìm thấy nếu nó là confugurable - chỉ cần hiển thị một cột nhiều hơn nữa.

+1

Đó là sự thật. Cách bố trí cho trang đó được xác định trong mã ErrorLogPage.cs, do đó, để thêm cột khác, bạn sẽ phải tải xuống nguồn, thực hiện thay đổi và biên dịch lại. http://code.google.com/p/elmah/source/browse/trunk/src/Elmah/ErrorLogPage.cs –

4

Nó không phải là một vấn đề để ghi đè lên nhà máy xử lý Elmah mặc định để nó sẽ lọc các bản ghi Elmah bằng các ứng dụng. Tôi đã viết một ứng dụng mẫu cho thấy làm thế nào để làm điều đó với MySql: http://diagnettoolkit.codeplex.com/releases/view/103931. Bạn cũng có thể kiểm tra một số post on my blog nơi tôi giải thích cách hoạt động của nó.

+0

+1 - đây là cách thực hiện điều này. Sạch sẽ và đơn giản và không cần phải sửa đổi các tập lệnh DDL gốc cũng như mã nguồn Elmah. Bài đăng blog giải thích tất cả. Làm tốt lắm thưa ngài! –

+0

Tôi vừa mới thực hiện điều này. Hoạt động tốt! –

+0

Đây là một lựa chọn tốt đẹp. Tuy nhiên, nhược điểm là bạn vẫn có thể chỉ nhìn thấy lỗi từ một ứng dụng tại một thời điểm, và bạn phải biết tên của ứng dụng lên phía trước. Nếu bạn muốn xem danh sách các lỗi trên tất cả các ứng dụng (đó là cách tôi giải thích câu hỏi), điều này sẽ không làm điều đó, trừ khi tôi không thấy phần đó. –