log4net 按照日期备份日志
配置:
<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 按照日期备份日志的更多相关文章
- Log4Net 配置日志按日期和日志级别分类写入
配置效果图: 配置代码: <?xml version="1.0" encoding="utf-8" ?> <log4net> <! ...
- log4net生成多个日志文件
使用Log4Net日志组件时,经常会碰到这样一种场景,我想把错误的日志记录在Error.log文件中,而把操作的日志放在Operation.log文件中 经过几番尝试,终于实现了,在此把Log4Net ...
- log4net 记录MVC监控日志
由于MVC自身的特点,可以让我们记录每一个Controller下Action的执行时间以及View视图渲染完成的时间,本文采用log4net记录MVC每个Action的执行时间和View视图渲染完成时 ...
- linux实现nginx按照日期存储日志
通过shell脚本实现+定时任务+nginx信号管理实现日志按日期存储. 1.编写shell脚本,实现日志按日期存储 #!/bin/bash base_path='/home/wwwlogs/' lo ...
- C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点
C#反射实现 一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...
- 【shell脚本】定时备份日志===logBackup.sh
定时备份日志 设置执行权限 [root@VM_0_10_centos shellScript]# chmod a+x logBackup,sh 脚本内容 [root@VM_0_10_centos sh ...
- log4j配置参数详解——按日志文件大小、日期切分日志文件
项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式.下面就总结一下log4j常用的配置参数以及切分日志的不同方式. ...
- 如何为Windows服务增加Log4net和EventLog的日志功能。
一.简介 最近在做一个项目的时候,需要该项目自动启动.自动运行,不需要认为干预.不用说,大家都知道用什么技术,那就是 Windows服务.在以前的Net Framework 平台下,Windows 服 ...
- Linux下使用crontab定时备份日志
上周学习了Linux,其中有使用crontab定时备份日志的内容,现把主要步骤记录如下: 首先需要备份的日志的源目录位于/opt/lampp/logs/access_log 备份到/tmp/logs下 ...
随机推荐
- tomcat端口号修改
修改Tomcat的端口号: 在默认情况下,tomcat的端口是8080,如果出现8080端口号冲突,用如下方法可以修改Tomcat的端口号: 首先: 在Tomcat的根(安装)目录下,有一个conf文 ...
- lintcode-179-更新二进制位
179-更新二进制位 给出两个32位的整数N和M,以及两个二进制位的位置i和j.写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串) 注意事项 In the function ...
- TCP系列16—重传—6、基础快速重传(Fast Retransmit)
一.快速重传介绍 按照TCP协议,RTO超时重传是一个非常重要的事件,当RTO超时的时候,TCP会同时通过两种方式非常谨慎的降低发送数据包的速率,一种是基于拥塞控制削减发送窗口的大小,另外一个是通过指 ...
- 移动端调试和fiddler移动端抓包使用
这里介绍一款移动端的调试工具以及抓包工具fiddler的使用.也是初次接触,算是初次接触的总结. 1,移动端调试工具.手机截图如下 代码实现 <!DOCTYPE html> <htm ...
- tcp发送缓冲区中的数据都是由产生数据的进程给推送到ip层还是有定时任务触发?
和几个变量有非常大的关系 发送缓冲区的大小,如何单独设置一个socket的发送缓冲区 socketopt 发送缓冲区中的数据,如果被拥塞窗口限制住了,那么这些数据可能就放在tcpbuffer里的,此时 ...
- concurrenthashmap jdk1.8
参考:https://www.jianshu.com/p/c0642afe03e0 CAS的思想很简单:三个参数,一个当前内存值V.旧的预期值A.即将更新的值B,当且仅当预期值A和内存值V相同时,将内 ...
- H3C SNMP配置解析
华为交换机snmp配置 snmp-agent /使能snmp服务/snmp-agent local-engineid ...
- Spring MVC之@RequestBody@ResponseBody详解
引言: 接上一篇文章讲述处理@RequestMapping的方法参数绑定之后,详细介绍下@RequestBody.@ResponseBody的具体用法和使用时机: 简介: @RequestBody 作 ...
- 请问:在delphi中怎样判断DBgrid中数据是否被修改,以便在退出窗口时加以提示
若DBGrid.DataSource.DateSet为ADOQuery1,这样试一下:if ADOQuery1.Modified then ... procedure TForm1.FormClose ...
- ::before和::after 常见的用法
.lizi:after{ content: "I'M after"; /*插入字符串*/ content: "attr(id)"; /*插入当前元素属性*/ ...