2009-08-22 38 views
9

Tôi đang sử dụng VS2005, một dự án trang web, một dự án triển khai web và Log4Net. Tôi có thể sử dụng đăng nhập khi tôi đang phát triển tại địa phương. Tôi có thể thấy các tệp nhật ký và mọi thứ đều ổn. Khi tôi xây dựng trang web của mình, (sử dụng dự án triển khai web), tôi sử dụng triển khai dưới dạng một tùy chọn DLL duy nhất. Khi tôi kiểm tra vị trí của các tệp nhật ký của mình, tôi không thể xem bất kỳ tệp nào.Tại sao Log4Net không tạo tệp nhật ký trong sản xuất?

Có cách nào để khắc phục sự cố này không. Tôi không nghĩ rằng việc thêm giá trị gỡ lỗi vào Cài đặt ứng dụng sẽ giúp vì tôi không có bảng điều khiển vì đó là trang web.

CHỈNH SỬA Tôi không muốn đại diện 150 phải lãng phí một lần cuối cùng. Tôi so sánh dấu vết bên trong từ môi trường dev của tôi với dấu vết từ quá trình sản xuất. Theo dõi môi trường dev của tôi cho thấy các cuộc gọi Xml Configurator nơi sản xuất một trong những không. Tôi có mã trong global.asax trên phương thức application_start(). Tôi đặt mã gỡ lỗi trong đó và nó được gọi là trong dev nhưng không phải trong sản xuất.

Tôi nghĩ đây là nơi dự án triển khai web đang gây ra một số vấn đề. Liệu global.asax được biên dịch thành một DLL duy nhất? Khi tôi thực hiện một xây dựng trong thư mục triển khai, tôi thấy một tập tin global.compiled. Phải điều này đi vào thư mục bin trong sản xuất? Hoặc là mã global.asax trong DLL đơn? Có cả hai trong thư mục bin hoặc chỉ DLL không thay đổi bất cứ điều gì.

Trả lời

3

Tôi đã tìm thấy vấn đề. Quyền đã được CHỈ ĐỊNH. Hóa ra việc sử dụng một dự án triển khai web cũng tạo ra một tệp precompliled.config trong thư mục gốc. Tôi đã không sao chép điều đó cho sự sản xuất. Ngay sau đó là trong tất cả mọi thứ làm việc. Xin lỗi, không ai có tiền thưởng.

1

Điều này đã xảy ra với tôi trước đây và là quyền trên người dùng ASPNET để tạo tệp khi cần. Có thể kiểm tra nếu có bất cứ điều gì trong sổ ghi sự kiện cửa sổ chỉ ra điều này?

Để kiểm tra loại điều (chúng tôi xem người quan sát!), Chúng tôi xuất ra nơi log4net sẽ hoạt động bằng cách viết ra bằng cách sử dụng OutputDebugString() via pinvoke.. Chúng tôi cũng đặt điều này trong một thử bắt để đảm bảo rằng chúng tôi phát hiện ra lỗi liên quan đến điều này vì nó rất quan trọng để sử dụng để có thể đăng nhập chính xác.

7

Quy trình công nhân có đủ đặc quyền để ghi vào thư mục nhật ký không? Tôi đoán đó không phải là trường hợp. Bạn có thể muốn cung cấp cho nhóm nhân viên quy trình quyền ghi vào thư mục và xem liệu có khắc phục được sự cố của bạn hay không.

+0

Những nhóm tôi phải cung cấp quyền ghi vào. Tôi nghĩ đó là dịch vụ mạng? – uriDium

+3

Tôi nghĩ rằng có một nhóm cục bộ, IIS_WPG, mà tôi sẽ sử dụng. Thông thường, bất kỳ tài khoản nào đang chạy quy trình công nhân đều phải được đưa vào nhóm này. Sử dụng nhóm bảo vệ bạn trong trường hợp bạn quyết định thay đổi tài khoản vì một số lý do khác. Ngoài ra, nếu thư mục nhật ký của bạn nằm trong trang web, hãy đảm bảo bạn đã thiết lập một số bảo vệ trên đó để mọi người không thể thực hiện yêu cầu chống lại nó. – tvanfosson

+0

Cảm ơn lời khuyên của bạn. Có nơi nào chúng ta có thể đọc về điều này không. Tôi thực sự mới về bảo mật và quyền. – uriDium

0

Kiểm tra quyền trên thư mục đầu ra mong muốn và đảm bảo rằng dịch vụ web có thể ghi vào đó. Cách đơn giản nhất để làm điều đó là chạy filemon.exe (một ứng dụng SysInternals) và hạn chế nó cho phù hợp. Điều này sẽ cho bạn biết nếu có bất kỳ điều gì không thành công và bạn có thể khắc phục khi cần thiết

+0

Tôi đã chạy filemon và lọc cho * log. Tệp duy nhất xuất hiện là tệp gỡ lỗi nội bộ của Log4Net. Nó đã không cố gắng để mở viết bất cứ điều gì để các tập tin đăng nhập mong muốn. – uriDium

0

Đảm bảo cấu hình của log4net được định cấu hình chính xác. Có lẽ dll là alright nhưng tập tin cấu hình là mất tích? log4net có thể có nhưng chỉ không có bất kỳ appenders đang hoạt động nào.

0

để đảm bảo nếu log4net được định cấu hình đúng cách, tôi tạo Trình cài đặt UDP đăng nhập vào cổng 9090. tôi sử dụng cưa http://logging.apache.org/chainsaw/index.html để kiểm tra các mục nhập nhật ký.

với điều này, bạn có thể kiểm tra rằng ít nhất một số mục nhập nhật ký đã được thực hiện và trình ghi nhật ký đang chạy.

UDP appender Config

<appender name="UdpAppender" type="log4net.Appender.UdpAppender"> 
     <remoteAddress value="localhost" /> 
     <remotePort value="9090" /> 
     <layout type="log4net.Layout.XmlLayoutSchemaLog4j"> 
      <locationInfo value="true" /> 
     </layout> 
</appender> 

Chainsaw XML

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">  
    <plugin name="LocalReceiver" class="org.apache.log4j.net.UDPReceiver"> 
     <param name="Port" value="9090" /> 
    </plugin>  
</log4j:configuration> 
+0

Tôi đã thử điều này. Một vài điều làm tôi bối rối. Tôi không có tệp cấu hình log4j. Tôi đang sử dụng Log4net. Điều này vẫn sẽ làm việc? Tiếp theo, tôi đã sử dụng tệp cấu hình web của mình để giữ cài đặt của mình (hoạt động trong dev). Tôi đã mở cổng 9090 nhưng Chainsaw dường như lắng nghe trên cổng 4445 và 4560. Tôi có nên đặt phần trên vào một tệp ở đâu đó và thử lại không? – uriDium

+0

Ngoài ra, một điều cuối cùng, tôi thấy rằng bạn trỏ trình cắm thêm vào một lớp apache. Tôi cũng phải tải xuống các lớp đó hay chúng có trong webstart không? – uriDium

+0

chỉ lưu xml thứ hai dưới dạng tệp và ngay khi bạn bắt đầu cưa, bạn có thể mở tệp cấu hình -> nếu bạn không được yêu cầu chọn tệp cấu hình hơn là bạn phải xóa thư mục ".chainsaw" trong thư mục người dùng của mình . bạn không cần cấu hình log4j, chỉ cần sử dụng web.config -> nhưng thêm appender này như được cấu hình như trên – nWorx

2

Dường như gốc rễ của vấn đề của bạn là sự kiện Application_Start trong global.asax không bắn.

Có sự cố "đã biết" khi triển khai từ VS 2005 lên Windows 2003, mà Application_Start không kích hoạt.

Nội dung của Global.asax.cs sẽ được biên dịch vào dll. Nhưng Application_Start sẽ không chạy trừ khi tệp Global.asax xuất hiện.

Dưới đây là một vài liên kết có liên quan:

http://accidentaltechnologist.com/asp-net/application_start-not-firing-and-the-globalasax/

http://www.velocityreviews.com/forums/t300292-web-deployment-projects-globalasax-problem.html

Có một số khả năng khác được đề cập trong các liên kết ở trên.

Hope this helps

Shiraz

4

Thêm này trong tập tin AssemblyInfo.cs và kiểm tra

[assembly: log4net.Config.XmlConfigurator(Watch=true)] 
Các vấn đề liên quan