2014-09-17 17 views
8

Làm thế nào chúng ta có thể đăng nhập vào Azure withe granularity & kiểm soát tương đương với log4net? Chúng tôi sử dụng log4net trong các ứng dụng web của chúng tôi, chúng tôi chạy trên IIS và hoạt động rất tốt cho chúng tôi. Đó có phải là tốt nhất trên Azure quá?đăng nhập Azure

Chúng tôi hoàn toàn thích tệp nhật ký (as opposed to database entries) nhưng nếu có điều gì đó hoạt động tốt hơn trong Azure, tôi sẽ mở để cải tiến. Cách Trace viết vào một bảng trong Azure là khủng khiếp - chúng tôi chắc chắn không wan điều đó.

Lý do tôi thích tệp nhật ký dễ dàng hơn để xem điều gì đã xảy ra theo thứ tự mà tôi cần 99% thời gian.

Đây là dành cho ứng dụng web Azure sẽ có nhiều phiên bản. Nó là tốt nếu các bản ghi là khác nhau cho mỗi trường hợp.

cảm ơn - dave

+0

Đây có phải là Trang web Azure hoặc Dịch vụ đám mây không? Đối với các trang web, bạn có thể chỉ cần đăng nhập vào một tập tin. Duyệt trang web qua Visual Studio sẽ cho phép bạn tải xuống chế độ xem tệp nhật ký khá dễ dàng. –

+0

@BrendanGreen có trang web chứ không phải dịch vụ đám mây. Có dễ hay không - chỉ cần ghi log4net cũ vào một tập tin? Nếu có, có một liên kết hiển thị cách định cấu hình vị trí của tệp nhật ký không? –

+0

@BrendanGreen - ps, viết tất cả những câu trả lời đó và tôi rất vui khi đánh dấu nó là giải pháp. –

Trả lời

10

Điều này khá đơn giản. Tôi sử dụng cấu hình log4net sau để đổ một log file trong thư mục gốc ứng dụng web (dễ dàng thay đổi đến một thư mục con):

<log4net> 
    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="LogFileAppender" /> 
    </root> 
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
    <param name="File" value="my_web.log" /> 
    <param name="AppendToFile" value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date{yyyy-dd-MM HH:mm:ss.fff} [%thread] %-5level %logger.%method [%property{NDC}] - %message%newline" /> 
    </layout> 
    </appender> 
</log4net> 

tôi sau đó kiểm tra các log file khi cần thiết trực tiếp từ Visual Studio (nhấn vào đôi nộp tải nó) server Explorer:

Azure Website via Server Explorer

+1

Có an toàn không - chỉ cần đặt giá trị = "my_web.log"? Tôi lo lắng rằng thư mục mặc định không phải là một điều an toàn để phụ thuộc vào trong một ứng dụng web. –

+0

Điều đó tùy thuộc vào cách bạn định cấu hình trang web của mình. Giống như 'web.config', tôi đã chặn' * .log' khỏi trang web. Ngoài ra, bạn cũng có thể chỉ định thư mục con cho các tệp nhật ký, chẳng hạn như 'logs \ my_web.log' –

10

tôi nghĩ bạn nên cẩn thận khi lưu trữ các tập tin đăng nhập cục bộ trong Azure như thế này được không garanteed để dính vào xung quanh. VM được sử dụng để lưu trữ trang web có thể được quay lại và nhật ký sẽ bị mất.

Giải pháp tốt hơn là sử dụng chẩn đoán Azure kết hợp với log4net (sẽ hoạt động tương tự cho các cơ chế ghi nhật ký khác như NLog). Quá trình được tổng hợp tại đây:

  1. Thiết lập lưu trữ cục bộ làm vị trí trên vai trò (máy ảo) nơi tệp nhật ký được ghi.

  2. Thêm phần tử vào tệp diagnostics.wadcfg để hướng dẫn chẩn đoán Azure tạo và sử dụng vùng chứa trong bộ nhớ blob.

  3. Thêm phần tử bên trong để hướng dẫn chẩn đoán Azure theo dõi thư mục ghi nhật ký trong vị trí tài nguyên cục bộ LogStorage.

Bằng cách này, nhật ký được lưu trữ cục bộ sẽ được sao chép vào bộ nhớ blob.

Full câu chuyện ở đây: http://justazure.com/microsoft-azure-diagnostics-part-1-introduction/

+1

Được thăng hạng để quan sát sự kiên trì, nhưng giải pháp của bạn là dành cho Dịch vụ đám mây; OP đang chạy trong trang web Azure. – BenV

+0

Chúng tôi đã sử dụng thành công phương pháp tương tự, để tích hợp các trang web Azure với chẩn đoán Azure. Hãy cho tôi biết nếu bạn vẫn gặp phải vấn đề và có thể đi vào chi tiết hơn. –

+0

@StefanIancu Tôi có một ứng dụng web ASP NET MVC đơn giản. Tôi thiết lập tài khoản lưu trữ, nhưng tôi không có tệp có tên là 'diagnostics.wadcfg'. Ngoài ra nó là lạ, trong giám sát lưu trữ của tôi nó nói rằng tôi có 6500 yêu cầu trong TABLE, nhưng khi tôi bấm vào bảng, nó nói rằng "Không tìm thấy bảng". – Jaanus

0

Cách tốt nhất để đăng nhập dữ liệu cho Azure máy ảo hoặc dịch vụ đám mây là sử dụng Log4Net để đăng nhập vào đĩa cũng như thông tin đăng nhập từ tất cả các trường của bạn vào một tài khoản lưu trữ Azure. Ưu điểm là bạn sẽ nhận được một giải pháp mạnh mẽ hơn. Nếu vì lý do nào đó, Azure Diagnostics bị hỏng trong một trang web trực tiếp, bạn vẫn có thể điều khiển từ xa vào bất kỳ phiên bản nào và cố gắng chẩn đoán sự cố. Đối với các dịch vụ khác, chẳng hạn như các ứng dụng web, nơi bạn không thể điều khiển từ xa vào các cá thể, nó đủ để ghi thông tin vào tài khoản Azure Storage.

  1. Logging To Disk: Nếu bạn có một dịch vụ đám mây, vai trò vai trò web/nhân viên của bạn sẽ chỉ có quyền ghi vào đĩa ứng dụng mà là khá nhỏ như herehere. Nếu bạn hài lòng với việc đăng nhập không nhiều hơn nói 200-300 MB dung lượng đĩa thì bạn tốt. Tuy nhiên, nếu bạn muốn đăng nhập nhiều hơn thì tốt nhất bạn nên sử dụng khái niệm LocalStorage sẽ cho phép bạn đặt trước dung lượng trên ổ đĩa C có dung lượng lớn (đối với Máy ảo PaaS Drive C có 225 GB khoảng trong khi ổ đĩa ứng dụng (E:/F :) có 1,5 GB không gian). Bạn có thể tìm hiểu cách sử dụng bộ nhớ cục bộ here.
  2. Ghi vào tài khoản lưu trữ Azure: Bạn sẽ cần phải chẩn đoán Azure đang hoạt động như được hiển thị here. Hơn nữa, bạn sẽ phải thêm một Trace Appender vào Log4Net như được hiển thị here.

Bạn sẽ mất nửa ngày hoặc một ngày để thiết lập và kiểm tra nhưng tôi hy vọng câu trả lời cho câu hỏi của bạn.

Các vấn đề liên quan