2009-11-04 8 views
5

Tôi đang thử đăng nhập một số mục nhập trong tệp nhật ký (Log.Trace/Log.Debug) trong khi kiểm tra đơn vị VS của tôi chạy. Tôi cũng đã sao chép tệp NLog.config vào thư mục ra ngoài thông qua thuộc tính DeploymentItem trên lớp. Tệp nhật ký của tôi vẫn chưa được tạo. Bất kỳ trợ giúp nào về cách chúng ta có thể đăng nhập các mục nhập trong một tệp giống như chúng ta làm cho ứng dụng web thông thường.NLog với VS 2008 Unit Test

Trả lời

11

Tôi vừa tìm thấy một giải pháp cho vấn đề này: Thêm file App.config cho dự án thử nghiệm đơn vị yout với các nội dung sau:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> 
    </configSections> 

    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <targets> 
     <target name="debugLog" xsi:type="Console" /> 
    </targets> 

    <rules> 
     <logger name="*" minlevel="Debug" writeTo="debugLog"></logger> 
    </rules> 

    </nlog> 

</configuration> 

Bạn có thể đặt bất kỳ cấu hình bạn muốn như với NLog. tập tin cấu hình.

0

Thật không may đó là giải pháp XML duy nhất vào thời điểm đó. Nó không chỉ là về Unit Testing, mặc dù. NLog.config không hoạt động với bất kỳ ứng dụng Console nào.

Không biết nếu nó là do thiết kế hoặc chỉ là một giám sát. Dù sao tôi sẽ không nói rằng di chuyển NLog.config để App.config phần là bất kỳ cách nào thỏa đáng =/

Có lẽ nó là giá trị để nhận thấy rằng có một khả năng cấu hình nlog trực tiếp từ mã, những gì có thể hữu ích trong một số kịch bản . Người ta cũng có thể vui mừng khi tìm thấy tùy chọn gỡ lỗi nlog, điều đó sẽ ghi lại toàn bộ quá trình xử lý tệp cấu hình, đăng ký các mục tiêu ...

Để bật tính năng này, chỉ cần thêm nội bộLogFile và các thuộc tínhLogLevel nội bộ để làm thành phần:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="C:/logs/nlog.txt" internalLogLevel="Debug"> 

hoặc từ mã:

InternalLogger.LogFile = @"c:\logs\nlog.txt"; 

    InternalLogger.LogLevel = LogLevel.Trace;