init lserp cs 5.0
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Zhaizj.Framework.Config.DotNetConfig;
|
||||
using System.Configuration;
|
||||
|
||||
namespace Zhaizj.Framework.Data.Config
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据库配置方式
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 配置文件格式和说明:
|
||||
/// <code>
|
||||
/// <configSections>
|
||||
/// <sectionGroup name="Zhaizj.Config" type="Zhaizj.Framework.Config.GroupHandler,Zhaizj.Framework">;
|
||||
/// <section name="DataBase" type="Zhaizj.Framework.Data.Config.SectionHandler, Zhaizj.Framework"/>;
|
||||
/// </sectionGroup>
|
||||
/// </configSections>
|
||||
/// <Zhaizj.Config>
|
||||
/// <log>
|
||||
/// <log/>
|
||||
/// <Zhaizj.Config/>
|
||||
/// ......
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class SectionLogHandler : SectionBaseHandler<SectionLogHandler>
|
||||
{
|
||||
/// <summary>
|
||||
/// 配置日志级别
|
||||
/// </summary>
|
||||
[ConfigurationProperty("LogLevel", DefaultValue = "info")]
|
||||
public string LogLevel
|
||||
{
|
||||
get { return (string)this["LogLevel"]; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 配置日志路径
|
||||
/// </summary>
|
||||
[ConfigurationProperty("LogFile", DefaultValue = "yyyyMMdd")]
|
||||
public string LogFile
|
||||
{
|
||||
get { return (string)this["LogFile"]; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 配置日志路径
|
||||
/// </summary>
|
||||
[ConfigurationProperty("LogPath", DefaultValue = "log")]
|
||||
public string LogPath
|
||||
{
|
||||
get { return (string)this["LogPath"]; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 读取配置文件
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetLogConfig()
|
||||
{
|
||||
StringBuilder tagData = new StringBuilder();
|
||||
tagData.AppendLine("logLevel : " + LogLevel);
|
||||
tagData.AppendLine("logFile : " + LogFile);
|
||||
tagData.AppendLine("logPath : " + LogPath);
|
||||
return tagData.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
using Zhaizj.Framework;
|
||||
|
||||
namespace Zhaizj.Framework.Log {
|
||||
|
||||
/// <summary>
|
||||
/// 文件日志工具,所有日志会被写入磁盘
|
||||
/// </summary>
|
||||
internal class FileLogger : ILog {
|
||||
|
||||
private LogLevel _levelSetting;
|
||||
private LogMessage _msg;
|
||||
|
||||
public FileLogger() {
|
||||
_levelSetting = LogConfig.Instance.Level;
|
||||
_msg = new LogMessage();
|
||||
}
|
||||
|
||||
public void Debug( String message ) {
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "debug";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Debug) {
|
||||
LoggerUtil.WriteFile( _msg );
|
||||
}
|
||||
}
|
||||
|
||||
public void Info( String message ) {
|
||||
|
||||
Boolean isSql = false;
|
||||
if (message.StartsWith( LoggerUtil.SqlPrefix )) {
|
||||
isSql = true;
|
||||
message = strUtil.TrimStart( message, LoggerUtil.SqlPrefix );
|
||||
}
|
||||
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "info";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Info) {
|
||||
LoggerUtil.WriteFile( _msg );
|
||||
}
|
||||
|
||||
if (isSql) LoggerUtil.LogSqlCount();
|
||||
}
|
||||
|
||||
|
||||
public void Warn( String message ) {
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "warn";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Warn) {
|
||||
LoggerUtil.WriteFile( _msg );
|
||||
}
|
||||
}
|
||||
|
||||
public void Error( String message ) {
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "error";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Error) {
|
||||
LoggerUtil.WriteFile( _msg );
|
||||
}
|
||||
}
|
||||
|
||||
public void Fatal( String message ) {
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "fatal";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Fatal) {
|
||||
LoggerUtil.WriteFile( _msg );
|
||||
}
|
||||
}
|
||||
|
||||
public String TypeName {
|
||||
set {
|
||||
_msg.TypeName = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
namespace Zhaizj.Framework {
|
||||
|
||||
/// <summary>
|
||||
/// ÈÕÖ¾½Ó¿Ú
|
||||
/// </summary>
|
||||
public interface ILog {
|
||||
|
||||
void Debug( String message );
|
||||
void Info( String message );
|
||||
void Warn( String message );
|
||||
void Error( String message );
|
||||
void Fatal( String message );
|
||||
|
||||
String TypeName { set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
|
||||
namespace Zhaizj.Framework.Log {
|
||||
|
||||
/// <summary>
|
||||
/// 日志信息接口
|
||||
/// </summary>
|
||||
public interface ILogMsg {
|
||||
|
||||
String LogLevel { get; set; }
|
||||
DateTime LogTime { get; set; }
|
||||
String Message { get; set; }
|
||||
String TypeName { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using Zhaizj.Framework.Web;
|
||||
using System.IO;
|
||||
|
||||
namespace Zhaizj.Framework.Log
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 日志配置文件,默认配置文件在 /framework/config/log.config,日志文件在 /framework/log/log.txt 中
|
||||
/// </summary>
|
||||
public class LogConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// 日志配置信息(全局缓存)
|
||||
/// <remarks>
|
||||
/// logLevel 的值(不区分大小写):none, debug, info, warn, error, fatal, all;
|
||||
/// logFile 和 logProvider 通常不用填写
|
||||
/// </remarks>
|
||||
/// <example>
|
||||
/// 配置文件的格式(一行一条配置,键值之间用冒号分开)。
|
||||
/// <code>
|
||||
/// logLevel : info
|
||||
/// logFile : log/log.txt
|
||||
/// logProvider : Zhaizj.Framework.Log.FileLogger
|
||||
/// </code>
|
||||
/// </example>
|
||||
/// </summary>
|
||||
public static readonly LogConfig Instance = new LogConfig();
|
||||
/// <summary>
|
||||
/// 日志配置内容
|
||||
/// </summary>
|
||||
public Dictionary<String, String> dic = new Dictionary<String, String>();
|
||||
/// <summary>
|
||||
/// 构造函数初始化
|
||||
/// </summary>
|
||||
private LogConfig()
|
||||
{
|
||||
String absPath = getConfigAbsPath();
|
||||
dic = cfgHelper.Read(absPath);
|
||||
this.FilePath = getFilePath(dic);
|
||||
this.Level = getLevel(dic);
|
||||
this.LoggerImpl = getLoggerImpl(dic);
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取日志级别
|
||||
/// </summary>
|
||||
/// <param name="dic"></param>
|
||||
/// <returns></returns>
|
||||
private LogLevel getLevel(Dictionary<String, String> dic)
|
||||
{
|
||||
String level;
|
||||
dic.TryGetValue("logLevel", out level);
|
||||
if (strUtil.IsNullOrEmpty(level)) return getDefaultLevel();
|
||||
try
|
||||
{
|
||||
return (LogLevel)Enum.Parse(typeof(LogLevel), level, true);
|
||||
}
|
||||
catch { return getDefaultLevel(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取默认级别
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private static LogLevel getDefaultLevel()
|
||||
{
|
||||
return LogLevel.None;
|
||||
}
|
||||
|
||||
private void loadDefault()
|
||||
{
|
||||
this.Level = LogLevel.Debug;
|
||||
this.FilePath = getAbsoluteLogPath(getFilePath(dic));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取配置文件路径
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private static String getConfigAbsPath()
|
||||
{
|
||||
String absolutePath = PathHelper.Map(strUtil.Join(cfgHelper.ConfigRoot, "log.config"));
|
||||
if (!File.Exists(absolutePath))
|
||||
{
|
||||
absolutePath = null;
|
||||
}
|
||||
return absolutePath;
|
||||
}
|
||||
/// <summary>
|
||||
/// 日志输出配置
|
||||
/// </summary>
|
||||
/// <param name="dic"></param>
|
||||
/// <returns></returns>
|
||||
private static String getFilePath(Dictionary<String, String> dic)
|
||||
{
|
||||
String filePath;
|
||||
String logPath;
|
||||
dic.TryGetValue("logFile", out filePath);
|
||||
dic.TryGetValue("logPath", out logPath);
|
||||
filePath = getDefaultLogPath(filePath, logPath);
|
||||
return getAbsoluteLogPath(filePath);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 日志输出路径修改
|
||||
/// </summary>
|
||||
/// <param name="filePath"></param>
|
||||
/// <param name="logdir"></param>
|
||||
/// <returns></returns>
|
||||
private static String getDefaultLogPath(string filePath, string logdir)
|
||||
{
|
||||
if (!Directory.Exists(logdir))
|
||||
{
|
||||
Directory.CreateDirectory(logdir);
|
||||
}
|
||||
string logPath = logdir + "/" + DateTime.Now.ToString(filePath) + ".txt";
|
||||
return cfgHelper.FrameworkRoot + logPath;
|
||||
}
|
||||
|
||||
private static String getAbsoluteLogPath(String path)
|
||||
{
|
||||
if (path.StartsWith(cfgHelper.FrameworkRoot) == false)
|
||||
path = strUtil.Join(cfgHelper.FrameworkRoot, path);
|
||||
return PathHelper.Map(path);
|
||||
}
|
||||
private static String getLoggerImpl(Dictionary<String, String> dic)
|
||||
{
|
||||
String logProvider;
|
||||
dic.TryGetValue("logProvider", out logProvider);
|
||||
return logProvider;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// 记录的层次,不区分大小写,有 none, debug, info, warn, error, fatal, all 这几种可选
|
||||
/// </summary>
|
||||
public LogLevel Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 日志文件存储的路径
|
||||
/// </summary>
|
||||
public String FilePath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 日志记录工具,默认是 FileLogger
|
||||
/// </summary>
|
||||
public String LoggerImpl { get; set; }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
|
||||
namespace Zhaizj.Framework.Log {
|
||||
|
||||
|
||||
public enum LogLevel {
|
||||
None,
|
||||
Fatal,
|
||||
Error,
|
||||
Warn,
|
||||
Info,
|
||||
Debug,
|
||||
All
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Web;
|
||||
|
||||
using Zhaizj.Framework.IO;
|
||||
using Zhaizj.Framework.Log;
|
||||
using Zhaizj.Framework.Web;
|
||||
|
||||
namespace Zhaizj.Framework {
|
||||
|
||||
/// <summary>
|
||||
/// 日志管理对象,通常用于获取日志工具
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// 一般在类的第一行定义
|
||||
/// <code>
|
||||
/// private static readonly ILog logger = LogManager.GetLogger( typeof( ObjectBase ) );
|
||||
/// </code>
|
||||
/// 然后可以在其他方法中使用
|
||||
/// <code>
|
||||
/// logger.Info( "your message" );
|
||||
/// </code>
|
||||
/// </example>
|
||||
public class LogManager {
|
||||
|
||||
private LogManager() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取一个日志工具
|
||||
/// </summary>
|
||||
/// <param name="type">对象类型</param>
|
||||
/// <returns>返回日志工具</returns>
|
||||
public static ILog GetLogger( Type type ) {
|
||||
return GetLogger( type.FullName );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取一个日志工具
|
||||
/// </summary>
|
||||
/// <param name="typeName">对象类型</param>
|
||||
/// <returns>返回日志工具</returns>
|
||||
public static ILog GetLogger( String typeName ) {
|
||||
ILog log = getLogger();
|
||||
log.TypeName = typeName;
|
||||
return log;
|
||||
}
|
||||
|
||||
private static ILog getLogger() {
|
||||
if (LogConfig.Instance.Level == LogLevel.None)
|
||||
return new NullLogger();
|
||||
|
||||
if (strUtil.IsNullOrEmpty( LogConfig.Instance.LoggerImpl ))
|
||||
return new FileLogger();
|
||||
|
||||
ILog log = null;
|
||||
String loggerImpl = LogConfig.Instance.LoggerImpl;
|
||||
if (strUtil.HasText( loggerImpl )) {
|
||||
String[] strArray = loggerImpl.Split( new char[] { ',' } );
|
||||
if (strArray.Length == 1) {
|
||||
Type type = Type.GetType( strArray[0].Trim() );
|
||||
if (type != null) {
|
||||
log = rft.GetInstance( type ) as ILog;
|
||||
}
|
||||
return log;
|
||||
}
|
||||
if (strArray.Length == 2) {
|
||||
log = Assembly.Load( strArray[1].Trim() ).CreateInstance( strArray[0].Trim() ) as ILog;
|
||||
}
|
||||
}
|
||||
return log;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 立即将日志内容写入磁盘(在 web 中,日志是在页面请求结束的时候才一起写入到磁盘的)
|
||||
/// </summary>
|
||||
public static void Flush() {
|
||||
|
||||
if (!SystemInfo.IsWeb) return;
|
||||
LoggerUtil.Flush();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
|
||||
namespace Zhaizj.Framework.Log {
|
||||
|
||||
/// <summary>
|
||||
/// ÈÕÖ¾ÐÅÏ¢
|
||||
/// </summary>
|
||||
public class LogMessage : ILogMsg {
|
||||
|
||||
private String _level;
|
||||
private DateTime _logTime;
|
||||
private String _message;
|
||||
private String _typeName;
|
||||
|
||||
public String LogLevel {
|
||||
get { return _level; }
|
||||
set { _level = value; }
|
||||
}
|
||||
|
||||
public DateTime LogTime {
|
||||
get { return _logTime; }
|
||||
set { _logTime = value; }
|
||||
}
|
||||
|
||||
public String Message {
|
||||
get { return _message; }
|
||||
set { _message = value; }
|
||||
}
|
||||
|
||||
public String TypeName {
|
||||
get { return _typeName; }
|
||||
set { _typeName = value; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using Zhaizj.Framework;
|
||||
using Zhaizj.Framework.Data;
|
||||
|
||||
namespace Zhaizj.Framework.Log {
|
||||
|
||||
/// <summary>
|
||||
/// 日志信息(尚未实现,请勿使用)
|
||||
/// </summary>
|
||||
internal class LogMsg : ILogMsg {
|
||||
|
||||
private int _id;
|
||||
private String _level;
|
||||
private DateTime _logTime;
|
||||
private String _message;
|
||||
private String _typeName;
|
||||
|
||||
public void Insert() {
|
||||
}
|
||||
|
||||
public int Id {
|
||||
get { return _id; }
|
||||
set { _id = value; }
|
||||
}
|
||||
|
||||
public String LogLevel {
|
||||
get { return _level; }
|
||||
set { _level = value; }
|
||||
}
|
||||
|
||||
public DateTime LogTime {
|
||||
get { return _logTime; }
|
||||
set { _logTime = value; }
|
||||
}
|
||||
|
||||
public String Message {
|
||||
get { return _message; }
|
||||
set { _message = value; }
|
||||
}
|
||||
|
||||
public String TypeName {
|
||||
get { return _typeName; }
|
||||
set { _typeName = value; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
|
||||
using Zhaizj.Framework;
|
||||
|
||||
namespace Zhaizj.Framework.Log {
|
||||
|
||||
/// <summary>
|
||||
/// 存储到数据库的日志(尚未实现,请勿使用)
|
||||
/// </summary>
|
||||
internal class LoggerForDB : ILog {
|
||||
|
||||
private LogLevel _levelSetting;
|
||||
private LogMsg _msg;
|
||||
|
||||
public LoggerForDB() {
|
||||
_levelSetting = LogConfig.Instance.Level;
|
||||
_msg = new LogMsg();
|
||||
}
|
||||
|
||||
public void Debug( String message ) {
|
||||
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "debug";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Debug) {
|
||||
_msg.Insert();
|
||||
}
|
||||
}
|
||||
|
||||
public void Info( String message ) {
|
||||
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "info";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Info) {
|
||||
_msg.Insert();
|
||||
}
|
||||
}
|
||||
|
||||
public void Warn( String message ) {
|
||||
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "warn";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Warn) {
|
||||
_msg.Insert();
|
||||
}
|
||||
}
|
||||
|
||||
public void Error( String message ) {
|
||||
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "error";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Error) {
|
||||
_msg.Insert();
|
||||
}
|
||||
}
|
||||
|
||||
public void Fatal( String message ) {
|
||||
|
||||
_msg.LogTime = DateTime.Now;
|
||||
_msg.Message = message;
|
||||
_msg.LogLevel = "fatal";
|
||||
System.Diagnostics.Debug.Write( LoggerUtil.GetFormatMsg( _msg ) );
|
||||
if (_levelSetting >= LogLevel.Fatal) {
|
||||
_msg.Insert();
|
||||
}
|
||||
}
|
||||
|
||||
public String TypeName {
|
||||
set { _msg.TypeName = value; }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
using Zhaizj.Framework;
|
||||
using Zhaizj.Framework.IO;
|
||||
using Zhaizj.Framework.ORM;
|
||||
using Zhaizj.Framework.Web;
|
||||
|
||||
namespace Zhaizj.Framework.Log {
|
||||
|
||||
/// <summary>
|
||||
/// 日志处理工具
|
||||
/// </summary>
|
||||
public class LoggerUtil {
|
||||
|
||||
private static Object objLock = new object();
|
||||
|
||||
/// <summary>
|
||||
/// sql 日志的前缀
|
||||
/// </summary>
|
||||
public static readonly String SqlPrefix = "sql=";
|
||||
|
||||
/// <summary>
|
||||
/// 在 web 系统中,记录 sql 执行的次数
|
||||
/// </summary>
|
||||
public static void LogSqlCount() {
|
||||
|
||||
if (CurrentRequest.getItem( "sqlcount" ) == null) {
|
||||
CurrentRequest.setItem( "sqlcount", 1 );
|
||||
}
|
||||
else {
|
||||
CurrentRequest.setItem( "sqlcount", ((int)CurrentRequest.getItem( "sqlcount" )) + 1 );
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将日志写入磁盘
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
public static void WriteFile( ILogMsg msg ) {
|
||||
if (SystemInfo.IsWeb == false) {
|
||||
writeFilePrivate( msg );
|
||||
return;
|
||||
}
|
||||
StringBuilder sb = CurrentRequest.getItem( "currentLogList" ) as StringBuilder;
|
||||
if (sb == null) {
|
||||
sb = new StringBuilder();
|
||||
CurrentRequest.setItem( "currentLogList", sb );
|
||||
}
|
||||
sb.AppendFormat( "{0} {1} {2} - {3} \r\n", msg.LogTime, msg.LogLevel, msg.TypeName, msg.Message );
|
||||
}
|
||||
|
||||
private static void writeFilePrivate( ILogMsg msg ) {
|
||||
|
||||
String formatMsg = GetFormatMsg( msg );
|
||||
writeContentToFile( formatMsg );
|
||||
}
|
||||
|
||||
private static void writeContentToFile( String formatMsg ) {
|
||||
String logFilePath = LogConfig.Instance.FilePath;
|
||||
lock (objLock) {
|
||||
if (Zhaizj.Framework.IO.File.Exists( logFilePath )) {
|
||||
DateTime lastAccessTime = System.IO.File.GetLastWriteTime( logFilePath );
|
||||
DateTime now = DateTime.Now;
|
||||
|
||||
if (cvt.IsDayEqual( lastAccessTime, now )) {
|
||||
Zhaizj.Framework.IO.File.Append( logFilePath, formatMsg );
|
||||
}
|
||||
else {
|
||||
String destFileName = getDestFileName( logFilePath );
|
||||
Zhaizj.Framework.IO.File.Move( logFilePath, destFileName );
|
||||
Zhaizj.Framework.IO.File.Write( logFilePath, formatMsg );
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (Directory.Exists( Path.GetDirectoryName( logFilePath ) ) == false) {
|
||||
Directory.CreateDirectory( Path.GetDirectoryName( logFilePath ) );
|
||||
}
|
||||
Zhaizj.Framework.IO.File.Write( logFilePath, formatMsg );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String getDestFileName( string logFilePath ) {
|
||||
String ext = Path.GetExtension( logFilePath );
|
||||
String pathWithoutExt = strUtil.TrimEnd( logFilePath, ext );
|
||||
return pathWithoutExt + "_" + DateTime.Now.Subtract( TimeSpan.FromDays( 1 ) ).ToString( "yyyy.MM.dd" ) + ext;
|
||||
}
|
||||
public static String GetFormatMsg( ILogMsg logMsg ) {
|
||||
return String.Format( "{0} {1} {2} - {3} \r\n", logMsg.LogTime, logMsg.LogLevel, logMsg.TypeName, logMsg.Message );
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将所有日志即可写入磁盘
|
||||
/// </summary>
|
||||
internal static void Flush() {
|
||||
StringBuilder sb = CurrentRequest.getItem( "currentLogList" ) as StringBuilder;
|
||||
if (sb != null)
|
||||
writeContentToFile( sb.ToString() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using Zhaizj.Framework;
|
||||
|
||||
namespace Zhaizj.Framework.Log {
|
||||
|
||||
/// <summary>
|
||||
/// ʹÓà null ģʽµÄÈÕÖ¾¹¤¾ß
|
||||
/// </summary>
|
||||
internal class NullLogger : ILog {
|
||||
|
||||
public void Debug( String message ) {
|
||||
}
|
||||
|
||||
public void Info( String message ) {
|
||||
}
|
||||
|
||||
public void Warn( String message ) {
|
||||
}
|
||||
|
||||
public void Error( String message ) {
|
||||
}
|
||||
|
||||
public void Fatal( String message ) {
|
||||
}
|
||||
|
||||
|
||||
public String TypeName {
|
||||
set { }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user