配置:

<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. Mac OS安装Scrapy失败

    报错: DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be re ...

  2. 《剑指offer》---把数组排成最小的数

    本文算法使用python3实现 1 题目描述:   输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组 $ [3,32,321] $ ,则打印出这 ...

  3. MongoDb Driver For Net

    由于mongodb开源github提供的net驱动都比较新,从2.3及以上版本都是netcore系列了,netframework至少都是4.6以上,且提供的dll并没有签名, 这就产生了一些问题 1 ...

  4. 菜鸟的飞翔日记-os篇

    一轮王道os复习感想 1概述 虽然去年有上操作系统这门必修课,考的成绩也算理想,本来还有点沾沾自喜,嗯,觉得自己学的还不错,知道有一天我拿起了王道,(没给王道打广告)看王道的原因完全在于为考研做准备, ...

  5. Qt在VS(Visual Studio)中使用

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt在VS(Visual Studio)中使用     本文地址:https://www.te ...

  6. oracle的SQL语句中的(+)是干什么用的?

    Oracle中的(+) 是外连接,如果在等号的左边就是左连接 和如果在等号的右边就是右连接 和left join ,right join 比较相似.....where sn (+) ='5620030 ...

  7. Delphi实现在数据库中存取图像

    向窗体上添加一个TListBox组件.一个TImage组件和一个TTable组件,设计完成的主界面如图1所示. 图1 主界面 本系统中需要设计一个新的基于Paradox 7的数据库Image.db,图 ...

  8. 第70天:jQuery基本选择器(一)

    一.jQuery基本选择器 jQuery是javascript的一个库,包含多个可重用的函数,用来辅助我们简化javascript开发 jQuery能做的javascipt都能做到,而javascri ...

  9. 第63天:json的两种声明方式

    一. json 两种声明方式 1. 对象声明   var  json = {width:100,height:100} 2. 数组声明   var  man = [        //  数组的 js ...

  10. 升级到EFCore2.0

    EF Core 2.0上周已经发布了 文章内容基于vs2017,请大家先安装好vs2017(15.3). 本篇文章主要讲下差异点,跟之前一样的就不再重复了. 文章目录(差异点): 一.新建项目, EF ...