Ứng dụng C# winforms 4.0 của tôi đã sử dụng trình viết luồng an toàn cho luồng để thực hiện thông tin ghi nhật ký, gỡ lỗi nội bộ. Khi ứng dụng của tôi mở ra, nó sẽ xóa tệp và tạo lại. Khi ứng dụng đóng, nó sẽ lưu tệp.Sử dụng StreamWriter để triển khai nhật ký cuộn và xóa từ đầu
Điều tôi muốn làm là sửa đổi ứng dụng của tôi để ứng dụng đó được thêm vào thay vì thay thế. Đây là một sửa chữa đơn giản.
Tuy nhiên, đây là câu hỏi của tôi:
Tôi muốn giữ tệp nhật ký của mình tối đa 10 megabyte. Ràng buộc của tôi sẽ đơn giản. Khi bạn đóng tệp, nếu tệp lớn hơn 10 megabyte, hãy cắt bớt 10% đầu tiên.
Có cách nào 'tốt hơn' thì làm như sau:
- Đóng tệp
- Kiểm tra nếu tập tin là> 10 meg
- Nếu vậy, hãy mở tập tin
- Phân tích các toàn bộ điều
- Cull 10% đầu tiên
- Viết tệp ra sau
- Đóng
Chỉnh sửa: tốt, tôi đã tự mình chuyển sang Log4Net là một điều tốt, nhưng thời gian cần để tìm hiểu thư viện mới và di chuyển tất cả các báo cáo nhật ký của tôi (hàng ngàn) không phải là thời gian hiệu quả cho việc tăng cường nhỏ mà tôi đã cố gắng thực hiện.
private static void PerformFileTrim(string filename)
{
var FileSize = Convert.ToDecimal((new System.IO.FileInfo(filename)).Length);
if (FileSize > 5000000)
{
var file = File.ReadAllLines(filename).ToList();
var AmountToCull = (int)(file.Count * 0.33);
var trimmed = file.Skip(AmountToCull).ToList();
File.WriteAllLines(filename, trimmed);
}
}
Và việc sử dụng thư viện cụ thể được viết để ghi nhật ký đã triển khai chức năng này thì sao? (Log4Net xuất hiện trong đầu) – Steve
Tôi chưa dành thời gian để nhìn vào Log4Net. Cho đến giờ, lớp soạn thảo đơn giản của tôi đã làm rất tốt. Nếu Log4Net cho phép nhật ký 'lăn' tôi đang tìm kiếm, thì đó là giải pháp tôi nên sử dụng. – greggorob64
Người đọc trong tương lai: '" ... [để] di chuyển tất cả các báo cáo đăng nhập (nghìn) của tôi không hiệu quả về thời gian "- và đây là lý do tại sao chúng tôi dựa vào tiêm phụ thuộc và giao diện. :) Một thiết kế tốt hơn, hãy tiêm một cá thể 'ILogger' (ví dụ) vào tất cả các lớp cần đăng nhập - hoặc thậm chí chỉ có một lớp/hàm khai thác chính duy nhất - sẽ cho phép bạn sửa đổi tất cả chức năng ghi nhật ký ở một vị trí khi thay đổi yêu cầu ghi nhật ký . – brichins