配置:

<logger name="Log.All">
  <level value="INFO" />
  <appender-ref ref="Log.AllAppender" />
</logger>
<appender name="Log.AllAppender" type="log4net.Appender.RollingFileAppender,log4net">
  <param name="File" value="..\\Logs\\log.txt" />
  <param name="AppendToFile" value="true" />
  <param name="RollingStyle" value="Date" />
  <param name="DatePattern" value="yyMMdd" />
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%m%n" />
  </layout>
</appender>
 

说明

需求:经过和运维人员确定,我们需要一个记录所有级别信息的日志文件,例如:log.txt,供运维抓取每天的日志信息。

但是:我们不能把所有日志信息一直记录到log.txt,一,log.txt越来越大;二,log.txt包含每天的信息。

策略:根据如上配置,我们会在指定目录下生成log.txt 文件,我们有个模式(yyMMdd)是按天备份,

这样每当第二天第一次日志写入,系统会先把log.txt 备份为log.txt+yyMMdd(log.txt151021),然后清空log.txt。

如此反复:

log.txt  一直记录当天日志信息。

log.txt151021  之前的日志信息

log.txt151020

log.txt151019

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net; [assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace UCredit.Abacus.Utility
{
/// <summary>
/// 日志记录
/// </summary>
public class Logs
{
/// <summary>
/// 普通日志
/// </summary>
//private static ILog LogInfo = LogManager.GetLogger("Log.Info");
/// <summary>
/// 错误日志
/// </summary>
//private static ILog LogError = LogManager.GetLogger("Log.Error");
/// <summary>
/// 全部日志
/// </summary>
private static ILog LogAll = LogManager.GetLogger("Log.All");
private static string separator = "^|";//分割符
/// <summary>
/// 根据枚举输出日志信息
/// </summary>
/// <param name="LogsEnum">枚举(Info;Error)</param>
/// <param name="information">输出的信息</param>
public static void LogsInfo(LogsEnum logsEnum, string information)
{
//string logs = "Log." + logsEnum.ToString();
//LogManager.GetLogger(logs).Info(information); LogAll.Info(logsEnum.ToString() + " " + DateTime.Now.ToString("yyy-MM-dd HH:mm:ss") + ":" + information);
}
/// <summary>
/// 根据枚举异步输出日志信息
/// </summary>
/// <param name="LogsEnum">枚举(Info;Error)</param>
/// <param name="information">输出的信息</param>
public static void LogsInfoAsyn(LogsEnum logsEnum, string information)
{
//string logs = "Log." + logsEnum.ToString();
//Task.Factory.StartNew(() => LogManager.GetLogger(logs).Info(information));
Task.Factory.StartNew(() => LogAll.Info(logsEnum.ToString() + " " + DateTime.Now.ToString("yyy-MM-dd HH:mm:ss") + ":" + information));
}
}
/// <summary>
/// 日志的枚举
/// </summary>
public enum LogsEnum
{
/// <summary>
/// 普通日志
/// </summary>
Info=,
/// <summary>
/// 错误日志
/// </summary>
Error
}
}

log4net 按照日期备份日志的更多相关文章

  1. Log4Net 配置日志按日期和日志级别分类写入

    配置效果图: 配置代码: <?xml version="1.0" encoding="utf-8" ?> <log4net> <! ...

  2. log4net生成多个日志文件

    使用Log4Net日志组件时,经常会碰到这样一种场景,我想把错误的日志记录在Error.log文件中,而把操作的日志放在Operation.log文件中 经过几番尝试,终于实现了,在此把Log4Net ...

  3. log4net 记录MVC监控日志

    由于MVC自身的特点,可以让我们记录每一个Controller下Action的执行时间以及View视图渲染完成的时间,本文采用log4net记录MVC每个Action的执行时间和View视图渲染完成时 ...

  4. linux实现nginx按照日期存储日志

    通过shell脚本实现+定时任务+nginx信号管理实现日志按日期存储. 1.编写shell脚本,实现日志按日期存储 #!/bin/bash base_path='/home/wwwlogs/' lo ...

  5. C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点

    C#反射实现   一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...

  6. 【shell脚本】定时备份日志===logBackup.sh

    定时备份日志 设置执行权限 [root@VM_0_10_centos shellScript]# chmod a+x logBackup,sh 脚本内容 [root@VM_0_10_centos sh ...

  7. log4j配置参数详解——按日志文件大小、日期切分日志文件

    项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式.下面就总结一下log4j常用的配置参数以及切分日志的不同方式. ...

  8. 如何为Windows服务增加Log4net和EventLog的日志功能。

    一.简介 最近在做一个项目的时候,需要该项目自动启动.自动运行,不需要认为干预.不用说,大家都知道用什么技术,那就是 Windows服务.在以前的Net Framework 平台下,Windows 服 ...

  9. Linux下使用crontab定时备份日志

    上周学习了Linux,其中有使用crontab定时备份日志的内容,现把主要步骤记录如下: 首先需要备份的日志的源目录位于/opt/lampp/logs/access_log 备份到/tmp/logs下 ...

随机推荐

  1. 学霸系统PipeLine功能规格说明书

    学霸系统PipeLine功能规格说明书共分为以下三部分: 1.产品面向用户群体 2.用户使用说明 3.产品功能具体实现 1.产品面向用户群体 我们这组的项目并不是传统意义上能发布并进行展示的项目,因此 ...

  2. java鼠标操控小程序

    最近在做一个软工的屏幕监控软件,已经实现了屏幕图片的传输,但是没有鼠标,才发现键盘上的PtrScSysRq键所截到图是没有鼠标信息的.== 暂时只需实现鼠标的移动事件,用robot.mouseMove ...

  3. Android之Bluetooth编程

    Android Bluetopth 编程大牛文章 http://my.oschina.net/u/994235/blog?catalog=313604 ViewGroup 相关资料 : http:// ...

  4. P4语法(1)基础数据类型和Header

    文章学习自:P4语言编程详解 由于原文有一点的年份,所以也继续阅读了相关的最新规范. P4语言规范 基础数据类型 布尔型(bool) 运算符 描述 and 双目运算符,结果为布尔型 or 双目运算符, ...

  5. UVALive - 6856 Circle of digits 后缀数组+二分

    题目链接: http://acm.hust.edu.cn/vjudge/problem/82135 Circle of digits Time Limit: 3000MS 题意 把循环串分割成k块,让 ...

  6. js设计模式之代理模式以及订阅发布模式

    为啥将两种模式放在一起呢?因为这样文章比较长啊. 写博客的目的我觉得首要目的是整理自己的知识点,进而优化个人所得知识体系.知识成为个人的知识,就在于能够用自己的话表达同一种意义. 本文是设计模式系列文 ...

  7. 在linux下如何显示隐藏文件

    #显示所有文件(包含隐藏文件)ls -a #只显示隐藏文件l.或者ls -d .* #在XWindow的KDE桌面中在"查看(View)"菜单里选"显示隐藏文件(Show ...

  8. C语言100例02 PHP版(练习)

    问题: 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万到 ...

  9. WPF如何将数据库中的二进制图片数据显示在Image控件上

    首先在xaml文件里定义一个Image控件,取名为img MemoryStream stream = new MemoryStream(获得的数据库对象): BitMapImage bmp = new ...

  10. BZOJ4566:[HAOI2016]找相同字符——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4566 https://www.luogu.org/problemnew/show/P3181 给定 ...