2010-05-12 31 views
56

Khi tôi đặt giá trị tệp thành logs\log-file.txt, chính xác nó sẽ tạo thư mục này ở đâu? Trong thư mục /bin?Log4net sẽ tạo tệp nhật ký này ở đâu?

web.config của tôi trông như thế này:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logs\log-file.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
</log4net> 

Đây có phải là cách chính xác để đăng nhập:

ILog logger = LogManager.GetLogger(typeof(CCController)); 
logger.Error("Some Page", ex); // where ex is the exception instance 
+0

Bạn có thể chấp nhận một trong các câu trả lời đúng không? Cảm ơn –

Trả lời

18

Giá trị tập tin có thể là một đường dẫn tuyệt đối như "c: \ logs \ log.txt "hoặc một đường dẫn tương đối mà tôi tin là có liên quan đến thư mục bin.

Theo như thực hiện nó, tôi thường đặt sau ở phía trên cùng của bất kỳ lớp tôi có kế hoạch để đăng nhập:

private static readonly ILog Log = LogManager.GetLogger( 
MethodBase.GetCurrentMethod().DeclaringType); 

Cuối cùng, bạn có thể sử dụng nó như vậy:

Log.Debug("This is a DEBUG level message."); 
+1

hmm..tó vẻ như không tạo tệp nhật ký ở bất kỳ đâu và tôi không nhận được bất kỳ lỗi nào? – Blankman

+2

Âm thanh như một vấn đề về quyền. Tôi sẽ ánh xạ cấu hình đến một đường dẫn tuyệt đối bên ngoài thư mục web của bạn. Sau đó, hãy đảm bảo rằng tệp nhật ký và thư mục có quyền cho phép nhân viên asp.net xử lý quyền truy cập thích hợp. –

+0

Đối với đường dẫn tương đối, tôi thích tệp nhật ký ở cấp dự án:

0

Tôi nghĩ rằng mẫu của bạn được lưu vào thư mục dự án của bạn và trừ khi iis mặc định, hoặc .NET, người dùng đã tạo quyền, nó sẽ không thể tạo thư mục nhật ký.

Tôi muốn tạo thư mục nhật ký trước và cho phép người dùng iis toàn quyền và xem tệp nhật ký có đang được tạo hay không.

4

Đối với thư mục nhật ký và nội dung tệp, hãy truy cập @Bens answer.

Tôi sẽ bình luận về phần tạo nhật ký. Imo không có chính xác cách. Khi mã hóa trình ghi nhật ký theo cách thủ công, tôi thực hiện theo cách bạn đang thực hiện:

ILog logger = LogManager.GetLogger(typeof(CCController)); 

vì nó ngắn gọn và súc tích.

Điều đó nói rằng, tôi không tạo các bản ghi nhật ký bên trong các lớp này vào những ngày này, I let my IoC container inject it for me.

9

Log4net đang lưu vào thư mục dự án của bạn. Một cái gì đó như: \SolutionFolder\ProjectFolder\bin\SolutionConfiguration\logs\log-file.txt.

đâu:

  • SolutionFolder là nơi bạn lưu giải pháp của bạn
  • ProjectFolder là thư mục mà dự án của bạn sống vào dung dịch và
  • SolutionConfiguration là thư mục mà contais tất cả những chương trình của dự án của bạn (mặc định là Gỡ lỗi hoặc Phát hành)

Hy vọng điều này sẽ hữu ích!

42

Nếu bạn muốn tập tin đăng nhập của bạn sẽ được diễn ra tại một địa điểm cụ thể mà sẽ được quyết định tại thời gian chạy có thể thư mục đầu ra dự án của bạn thì bạn có thể cấu hình bạn .config nhập tập tin theo cách đó

<file type="log4net.Util.PatternString" value="%property{LogFileName}.txt" /> 

và sau đó trong mã trước khi gọi log4net configure, hãy đặt đường dẫn mới như bên dưới

log4net.GlobalContext.Properties["LogFileName"] = @"E:\\file1"; //log file path 
log4net.Config.XmlConfigurator.Configure(); 

Đơn giản như thế nào? :)

+1

Bí quyết tuyệt vời, nó giúp đặt tất cả cấu hình ở một nơi :) –

32

nó sẽ tạo tệp trong thư mục gốc của dự án/giải pháp của bạn.

Bạn có thể chỉ định một địa điểm được lựa chọn trong web.config của ứng dụng của bạn như sau:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:/ServiceLogs/Olympus.Core.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value=".yyyyMMdd.log" /> 
     <maximumFileSize value="5MB" /> 
     <staticLogFileName value="true" /> 
     <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> 
     <maxSizeRollBackups value="-1" /> 
     <countDirection value="1" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level [%thread] %logger - %message%newline%exception" /> 
     </layout> 
    </appender> 

thẻ tập tin xác định vị trí.

+7

+1 câu trả lời duy nhất trả lời trực tiếp câu hỏi " Log4net sẽ tạo tệp nhật ký này ở đâu? " – Keith

+0

Hi Oladipo, đối với tôi mà không có bản ghi định nghĩa đường dẫn được tạo trong thư mục bin. – Pompair

2
FileAppender appender = repository.GetAppenders().OfType<FileAppender>().FirstOrDefault(); 
if (appender != null) 
    logger.DebugFormat("log file located at : {0}", appender.File); 
else 
    logger.Error("Could not locate fileAppender"); 
Các vấn đề liên quan