前言:
-----------------------------------------------
相关讨论组入口: http://www.pixysoft.net/ (点击进入)
功能简介:
使用了XML进行日志记录,方便日后进行日志分析汇总。
支持日志文件打包,能够减少磁盘空间。
支持日志提取,序列化操作,方便发送核心日志到服务器。
快速入门:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pixysoft.Framework.Logs
{
class quickstart
{
/// <summary>
/// 使用默认配置 操作日志
/// </summary>
public void start_001()
{
ILogger logger = Logger.GetLogger();
logger.Info("hello, {0}.", "world");
// 在bin/Debug/LOG 目录下会多出一个PIXYSOFT目录,包含PIXYSOFT.LOG文件,记录了日志
//<log level="info" time="2011-05-02 18:35:02:359" id="a5314c10-0e73-4714-becc-00be200e0438" module="">
//hello, world.
//</log>
}
/// <summary>
/// 使用代码配置 操作日志
/// </summary>
public void start_002()
{
ILogger logger = Logger.GetLogger("start_002", "module_001");
logger.Info("hello2, {0}", "world");
// bin/Debug/LOG/START_002/目录下多出 START_002.LOG, 内容为
//<log level="info" time="2011-05-02 22:40:39:140" id="a4d90477-e780-4d52-987f-21356a7aa75e" module="module_001">
//hello2, world
//</log>
// 即日志包含了module信息,方便日志分析进行模块提取
}
/// <summary>
/// 读取配置文件初始化
/// </summary>
public void start_003()
{
LogConfiguration config = new LogConfiguration();
//根配置 文件必须是pixysoft
config.Filename = "pixysoft";
config.LogCapacity = 1024;//配置文件大小,单位是字节
config.LogLevel = LogLevel.INFO;//配置记录级别
config.PrintToConsole = true;// 是否显示在console
//子节点配置 默认使用根节点配置,如果子节点配置与根节点不一致,才使用子节点配置
config.Settings.Add(new LoggerSetting());
config.Settings[0].Filename = "pixysoft2";
config.Settings[0].LogLevel = LogLevel.FATAL;
Logger.Initialize(config);
//使用日志
Logger.GetLogger("pixysoft").Info("我们能看到这个日志");
Logger.GetLogger("pixysoft2").Info("我们不能看到这个日志");//由于pixysoft2使用了子节点配置,因此info级别不会被记录
Logger.GetLogger("pixysoft2").Fatal("我们能看到这个日志");
Logger.GetLogger("pixysoft3").Debug("我们不能看到这个日志");//由于pixysoft3没有预先配置,因此使用了pixysoft的配置
Logger.GetLogger("pixysoft3").Info("我们能看到这个日志");
}
/// <summary>
/// 对日志文件进行解析
/// </summary>
public void start_004()
{
Logger.GetLogger().Info("hello");
Console.WriteLine(Logger.GetLogger().GetRecentReport(1000 * 60 * 60, LogLevel.INFO).Serialize(true));
//<report time="2011-05-02 23:07:50:437" id="N/A (recent format)" timespan="3600000" timefrom="2011-05-02 22:07:50:437" timeto="2011-05-02 23:07:50:437">
// <document>
// <log id="5b598fc6-8d59-4fa4-8348-7a34db1fa042" time="2011-05-02 23:06:17:484" level="INFO" filepath="xxxx\bin\Debug\log\">hello</log>
// </document>
//</report>
}
public void start_005()
{
//获取指定ID的日志在+-1000毫秒范围内的日志文件, 用于日志搜索跟踪
Logger.GetLogger().GetReport("5b598fc6-8d59-4fa4-8348-7a34db1fa042", 1000);
//获取指定ID的日志项目
Logger.GetLogger().GetRecord("5b598fc6-8d59-4fa4-8348-7a34db1fa042");
//日志文件打包
Logger.GetLogger().Backup();
}
}
using System.Collections.Generic;
using System.Text;
namespace Pixysoft.Framework.Logs
{
class quickstart
{
/// <summary>
/// 使用默认配置 操作日志
/// </summary>
public void start_001()
{
ILogger logger = Logger.GetLogger();
logger.Info("hello, {0}.", "world");
// 在bin/Debug/LOG 目录下会多出一个PIXYSOFT目录,包含PIXYSOFT.LOG文件,记录了日志
//<log level="info" time="2011-05-02 18:35:02:359" id="a5314c10-0e73-4714-becc-00be200e0438" module="">
//hello, world.
//</log>
}
/// <summary>
/// 使用代码配置 操作日志
/// </summary>
public void start_002()
{
ILogger logger = Logger.GetLogger("start_002", "module_001");
logger.Info("hello2, {0}", "world");
// bin/Debug/LOG/START_002/目录下多出 START_002.LOG, 内容为
//<log level="info" time="2011-05-02 22:40:39:140" id="a4d90477-e780-4d52-987f-21356a7aa75e" module="module_001">
//hello2, world
//</log>
// 即日志包含了module信息,方便日志分析进行模块提取
}
/// <summary>
/// 读取配置文件初始化
/// </summary>
public void start_003()
{
LogConfiguration config = new LogConfiguration();
//根配置 文件必须是pixysoft
config.Filename = "pixysoft";
config.LogCapacity = 1024;//配置文件大小,单位是字节
config.LogLevel = LogLevel.INFO;//配置记录级别
config.PrintToConsole = true;// 是否显示在console
//子节点配置 默认使用根节点配置,如果子节点配置与根节点不一致,才使用子节点配置
config.Settings.Add(new LoggerSetting());
config.Settings[0].Filename = "pixysoft2";
config.Settings[0].LogLevel = LogLevel.FATAL;
Logger.Initialize(config);
//使用日志
Logger.GetLogger("pixysoft").Info("我们能看到这个日志");
Logger.GetLogger("pixysoft2").Info("我们不能看到这个日志");//由于pixysoft2使用了子节点配置,因此info级别不会被记录
Logger.GetLogger("pixysoft2").Fatal("我们能看到这个日志");
Logger.GetLogger("pixysoft3").Debug("我们不能看到这个日志");//由于pixysoft3没有预先配置,因此使用了pixysoft的配置
Logger.GetLogger("pixysoft3").Info("我们能看到这个日志");
}
/// <summary>
/// 对日志文件进行解析
/// </summary>
public void start_004()
{
Logger.GetLogger().Info("hello");
Console.WriteLine(Logger.GetLogger().GetRecentReport(1000 * 60 * 60, LogLevel.INFO).Serialize(true));
//<report time="2011-05-02 23:07:50:437" id="N/A (recent format)" timespan="3600000" timefrom="2011-05-02 22:07:50:437" timeto="2011-05-02 23:07:50:437">
// <document>
// <log id="5b598fc6-8d59-4fa4-8348-7a34db1fa042" time="2011-05-02 23:06:17:484" level="INFO" filepath="xxxx\bin\Debug\log\">hello</log>
// </document>
//</report>
}
public void start_005()
{
//获取指定ID的日志在+-1000毫秒范围内的日志文件, 用于日志搜索跟踪
Logger.GetLogger().GetReport("5b598fc6-8d59-4fa4-8348-7a34db1fa042", 1000);
//获取指定ID的日志项目
Logger.GetLogger().GetRecord("5b598fc6-8d59-4fa4-8348-7a34db1fa042");
//日志文件打包
Logger.GetLogger().Backup();
}
}
下期预告:
Pixysoft.Framework.Configurations 通用配置框架。
除了提供比微软更加方便的xml配置外,还提供超高性能的XML序列化、反序列化操作(完全基于IL),是核心框架的基础。
附件下载:
Pixysoft.Framework.Logs 打包下载:
SVN: