public static IAppender CreateAdoNetAppender(string name, string connectionString, string spocName, IFilter levelFilter) { var adoNetAppender = new AdoNetAppender() { Name = name, BufferSize = 1, ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", ConnectionString = connectionString, CommandType = CommandType.StoredProcedure, CommandText = spocName, UseTransactions = false }; //-- Create parameters adoNetAppender.AddParameter(CreateParameter("@DateCreated", DbType.DateTime, null)); adoNetAppender.AddParameter(CreateParameter("@Application", DbType.String, new PatternLayout(_applicationName), 250)); adoNetAppender.AddParameter(CreateParameter("@Level", DbType.String, new PatternLayout("%p"))); adoNetAppender.AddParameter(CreateParameter("@Class", DbType.String, new PatternLayout("%c"), 250)); adoNetAppender.AddParameter(CreateParameter("@Thread", DbType.Int32, new PatternLayout("%t"))); adoNetAppender.AddParameter(CreateParameter("@Message", DbType.String, new PatternLayout("%m"), 8000)); adoNetAppender.AddParameter(CreateParameter("@Exception", DbType.String, new PatternLayout("%exception"), 8000)); adoNetAppender.AddParameter(CreateParameter("@Operation", DbType.String, new PatternLayout("InsertError"), 150)); adoNetAppender.AddFilter(levelFilter); adoNetAppender.ActivateOptions(); return(adoNetAppender); }
protected void Page_Load(object sender, EventArgs e) { foreach (IAppender appender in LogManager.GetRepository().GetAppenders()) { AdoNetAppender ado = appender as AdoNetAppender; if (ado != null) { Response.Write(string.Format("reconnected on error: {0}<BR/>", ado.ReconnectOnError)); try { using (SqlConnection cn = new SqlConnection(ado.ConnectionString)) { cn.Open(); } Response.Write("connection successful"); } catch (Exception ex) { Response.Write(string.Format("connection failed: {0}", ex.Message)); } } } Logger.Debug("test: {0}", DateTime.Now); Logger.Debug(new Exception("test"), "test: {0}", DateTime.Now); Logger.Debug("flush"); Logger.Flush(); }
/// <summary> /// 初始化 Log配置 的数据库连接字符串 /// </summary> /// <param name="appenderName">XML文档 对应的appenderName</param> /// <param name="connectionString">数据库连接字符串</param> /// <param name="loggerName">默认使用 default logger</param> public static void SetConnString(string appenderName, string connectionString, string loggerName = "") { AdoNetAppender targetApder = null; ILog log = GetLog(loggerName); var appenders = log.Logger.Repository.GetAppenders(); for (int i = 0; i < appenders.Length; i++) { if (!appenderName.Equals(appenders[i].Name)) { continue; } if (appenders[i] is log4net.Appender.AdoNetAppender) { targetApder = appenders[i] as log4net.Appender.AdoNetAppender; break; } } if (targetApder == null) { throw new ArgumentNullException("AdoNetAppender"); } targetApder.ConnectionString = connectionString; targetApder.ActivateOptions(); return; }
public static void InitializeLog4Net() { //initialize the log4net configuration based on the log4net.config file XmlConfigurator.ConfigureAndWatch(new FileInfo(System.AppDomain.CurrentDomain.BaseDirectory + @"\Log4Net.config")); Hierarchy hier = log4net.LogManager.GetRepository() as Hierarchy; if (hier != null) { // Get ADONetAppender by name AdoNetAppender adoAppender = (from appender in hier.GetAppenders() where appender.Name.Equals("DbAppender", StringComparison.InvariantCultureIgnoreCase) select appender).FirstOrDefault() as AdoNetAppender; // Change only when the auto setting is set if (adoAppender != null && adoAppender.ConnectionString.Contains("{auto}")) { adoAppender.ConnectionString = ExtractConnectionStringFromEntityConnectionString( GetEntitiyConnectionStringFromWebConfig()); //refresh settings of appender adoAppender.ActivateOptions(); } } }
public void NullPropertyProgmaticConfig() { AdoNetAppender appender = new AdoNetAppender(); appender.ConnectionType = typeof(Log4NetConnection).FullName; appender.BufferSize = -1; appender.CommandText = "INSERT INTO Log ([productId]) VALUES (@productId)"; appender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@productId", DbType = DbType.String, Size = 50, Layout = new RawPropertyLayout() { Key = "ProductId" } }); appender.ActivateOptions(); ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); BasicConfigurator.Configure(rep, appender); ILog log = LogManager.GetLogger(rep.Name, "NullPropertyProgmaticConfig"); log.Debug("Message"); IDbCommand command = Log4NetCommand.MostRecentInstance; IDbDataParameter param = (IDbDataParameter)command.Parameters["@productId"]; Assert.AreNotEqual(SystemInfo.NullText, param.Value); Assert.AreEqual(DBNull.Value, param.Value); }
public void BufferingTest() { ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); int bufferSize = 5; AdoNetAppender adoNetAppender = new AdoNetAppender(); adoNetAppender.BufferSize = bufferSize; #if NETSTANDARD1_3 adoNetAppender.ConnectionType = typeof(Log4NetConnection).AssemblyQualifiedName; #else adoNetAppender.ConnectionType = "log4net.Tests.Appender.AdoNet.Log4NetConnection"; #endif adoNetAppender.ActivateOptions(); BasicConfigurator.Configure(rep, adoNetAppender); ILog log = LogManager.GetLogger(rep.Name, "BufferingTest"); for (int i = 0; i < bufferSize; i++) { log.Debug("Message"); Assert.IsNull(Log4NetCommand.MostRecentInstance); } log.Debug("Message"); Assert.NotNull(Log4NetCommand.MostRecentInstance); Assert.AreEqual(bufferSize + 1, Log4NetCommand.MostRecentInstance.ExecuteNonQueryCount); }
public void Log4NetHasConnectionStringNameProperty() { var appender = new AdoNetAppender(); // we really only care that this property exists. So this test // must simply compile to pass! Assert.IsTrue(string.IsNullOrEmpty(appender.ConnectionStringName)); }
public void AdoNetAppenderExtensionsTest() { var adoNetAppender = new AdoNetAppender(); adoNetAppender.SetConnectionString(_connectionString); Assert.IsTrue(!string.IsNullOrWhiteSpace(adoNetAppender.ConnectionString)); }
public static IAppender GetSqliteAppender(string dbFilename) { var dbFile = new FileInfo(dbFilename); if (!dbFile.Exists) { CreateLogDb(dbFile); } var appender = new AdoNetAppender { BufferSize = 1, ConnectionType = "System.Data.SQLite.SQLiteConnection, System.Data.SQLite", ConnectionString = SqlLiteDataAccess.LoadConnectionString(), CommandText = "INSERT INTO Board (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" }; //appender.AddParameter(new AdoNetAppenderParameter //{ // ParameterName = "@SerialNumber", // DbType = DbType.String, // Layout = new Layout2RawLayoutAdapter(new PatternLayout("%serialnumber")) //}); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@Date", DbType = DbType.DateTime, Layout = new RawTimeStampLayout() }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@Level", DbType = DbType.String, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@Logger", DbType = DbType.String, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%logger")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@Message", DbType = DbType.String, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%message")) }); appender.ActivateOptions(); return(appender); }
/// <summary> /// Sets a connection string to AdoNetAppender instance /// </summary> /// <param name="adoNetAppender">AdoNetAppender instance</param> /// <param name="connectionString">Database connection string</param> /// <returns>AdoNetAppender instance after setting the database connection string</returns> public static AdoNetAppender SetConnectionString(this AdoNetAppender adoNetAppender, string connectionString) { if (adoNetAppender != null) { adoNetAppender.ConnectionString = connectionString; adoNetAppender.ActivateOptions(); } return(adoNetAppender); }
public static void NewDatePara(this AdoNetAppender ado, string paraName, string split) { PatternLayout layout = new MyLayout() { ConversionPattern = "%property{".Fmt(paraName).Fmt("}") }; layout.ActivateOptions(); ado.AddParameter(new AdoNetAppenderParameter { ParameterName = "".Fmt(split).Fmt(paraName), DbType = System.Data.DbType.DateTime, Layout = new Layout2RawLayoutAdapter(layout) }); }
//Initializing constructor protected DbBaseContext(string loggerName, string adoNetAppenderName, string localConnectionStringKey, string deployConnectionStringKey) { //Validate/initialize input parameters... if (String.IsNullOrWhiteSpace(loggerName) || String.IsNullOrWhiteSpace(adoNetAppenderName) || String.IsNullOrWhiteSpace(localConnectionStringKey) || String.IsNullOrWhiteSpace(deployConnectionStringKey)) { throw new ArgumentNullException("Empty parameter!!"); } //Retrieve the logger instance... m_loggerDB = LogManager.GetLogger(loggerName); if (null == m_loggerDB) { throw new KeyNotFoundException(String.Format("Log4net logger: {0} NOT found!!", loggerName)); //Logger not found!! } //Retrieve the appender instance... m_appender = findAppender(adoNetAppenderName); if (null == m_appender) { throw new KeyNotFoundException(String.Format("Log4net AdoNetAppender: {0} NOT found!!", adoNetAppenderName)); //Appender not found!! } //Retrieve the local connection string... ConnectionStringSettings css = ConfigurationManager.ConnectionStrings[localConnectionStringKey]; if (null != css) { m_localConnectionString = css.ConnectionString; } else { throw new KeyNotFoundException(String.Format("Connection String Key: {0} NOT found!!", localConnectionStringKey)); //Local connection string not found!! } //Retrieve the deploy connection string... css = ConfigurationManager.ConnectionStrings[deployConnectionStringKey]; if (null != css) { m_deployConnectionString = css.ConnectionString; } else { throw new KeyNotFoundException(String.Format("Connection String Key: {0} NOT found!!", deployConnectionStringKey)); //Deploy connection string not found!! } //Set the appender's connection string... m_appender.ConnectionString = GetConnectionString(); m_appender.ActivateOptions(); }
/// <summary> /// CreateAdoNetAppender /// </summary> /// <returns>返回logName</returns> public static string CreateAdoNetAppender() { var hier = LogManager.GetRepository(); if (hier == null) { return(string.Empty); } AdoNetAppender adoAppender = new AdoNetAppender(); adoAppender.Name = string.Format("AdoNetAppender_{0}", DateTime.Now.Ticks); adoAppender.CommandType = System.Data.CommandType.Text; adoAppender.BufferSize = 1; adoAppender.ConnectionType = "MySql.Data.MySqlClient.MySqlConnection, MySql.Data"; adoAppender.ConnectionString = LogDBString; //"Server=192.168.1.30;Database=logdb;Uid=dev;[email protected];Port=3306;"; adoAppender.CommandText = @"INSERT INTO `log`(`Level`,`APPID`,`ServerIP`,`Title`,`Index`,`Message`,`Exception`,`LogDate`) values(@level,@appid,@serverip,@title,@index, @message,@exception, @logdate)"; //adoAppender.CommandText = @"INSERT INTO `log`(`Level`,`Title`,`Index`,`Message`,`Exception`,`LogDate`) // values(@level,@title,@index, @message,@exception, @logdate)"; adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@level", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@appid", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new CustomLayout("%appid")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@serverip", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new CustomLayout("%serverip")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@method", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new CustomLayout("%method")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@title", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new CustomLayout("%title")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@index", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new CustomLayout("%index")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@message", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new CustomLayout("%clientMessage")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@exception", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new ExceptionLayout()) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@logdate", DbType = System.Data.DbType.DateTime, Layout = new RawTimeStampLayout() }); adoAppender.ActivateOptions(); BasicConfigurator.Configure(adoAppender); return(adoAppender.Name); }
// Create a new file appender public static IAppender CreateAdoNetAppender() { AdoNetAppender appender = new AdoNetAppender(); PatternLayout layout = new PatternLayout { ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n" }; layout.ActivateOptions(); appender.Layout = layout; appender.ActivateOptions(); return(appender); }
public void NoBufferingTest() { ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); AdoNetAppender adoNetAppender = new AdoNetAppender(); adoNetAppender.BufferSize = -1; //缓冲区大小,只有日志记录超过设定值才会一块写入到数据库。 adoNetAppender.ConnectionType = "UnitTestProject1.Appender.AdoNet.Log4NetConnection"; adoNetAppender.ActivateOptions(); BasicConfigurator.Configure(rep, adoNetAppender); ILog log = LogManager.GetLogger(rep.Name, "NoBufferingTest"); log.Debug("Message"); Assert.AreEqual(1, Log4NetCommand.MostRecentInstance.ExecuteNonQueryCount); }
public static void LoadADONetAppender(string name, string bufferSize, string connectionType, string connectionString, string CommandText) { Hierarchy hier = LogManager.GetRepository() as Hierarchy; if (hier != null) { AdoNetAppender appender = new AdoNetAppender(); appender.Name = name; appender.CommandType = CommandType.Text; appender.BufferSize = Convert.ToInt32(bufferSize); appender.ConnectionType = connectionType; appender.ConnectionString = connectionString; appender.CommandText = @CommandText; var appId = ConfigurationManager.AppSettings[LogConstants.AppId] ?? LogConstants.DefaultAppId; var localIpAddress = GetLocalIpAddress(); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = LogConstants.P_AppId, DbType = DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout(appId)) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = LogConstants.P_Ip, DbType = DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout(localIpAddress)) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = LogConstants.P_LogDate, DbType = DbType.DateTime, Layout = new RawTimeStampLayout() }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = LogConstants.P_Thread, DbType = DbType.String, Size = 255, Layout = new Layout2RawLayoutAdapter(new PatternLayout(LogConstants.V_Thread)) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = LogConstants.P_Level, DbType = DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout(LogConstants.V_Level)) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = LogConstants.P_Logger, DbType = DbType.String, Size = 255, Layout = new Layout2RawLayoutAdapter(new PatternLayout(LogConstants.V_Logger)) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = LogConstants.P_Message, DbType = DbType.String, Size = 4000, Layout = new Layout2RawLayoutAdapter(new PatternLayout(LogConstants.V_Exception)) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = LogConstants.P_Exception, DbType = DbType.String, Size = 4000, Layout = new Layout2RawLayoutAdapter(new ExceptionLayout()) }); appender.ActivateOptions(); BasicConfigurator.Configure(appender); } }
public static IAppender GetSqliteAppender(string dbFilename) { var dbFile = new FileInfo(dbFilename); if (!dbFile.Exists) { CreateLogDb(dbFile); } var appender = new AdoNetAppender { ConnectionType = "System.Data.SQLite.SQLiteConnection, System.Data.SQLite", ConnectionString = String.Format("Data Source={0};Version=3;", dbFilename), CommandText = "INSERT INTO Log (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" }; appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@Date", DbType = DbType.DateTime, Layout = new RawTimeStampLayout() }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@Level", DbType = DbType.String, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@Logger", DbType = DbType.String, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%logger")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@Message", DbType = DbType.String, Layout = new RawPropertyLayout { Key = "RenderedMessage" } }); appender.ActivateOptions(); return(appender); }
//methods //Source: http://mylifeandcode.blogspot.com/2012/12/setting-log4net-adonetappender.html private AdoNetAppender findAppender(string appenderName) { //Validate/initialize input parameters... if (String.IsNullOrWhiteSpace(appenderName)) { return(null); } Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy; if (null != hierarchy) { AdoNetAppender appender = (AdoNetAppender)hierarchy.GetAppenders() .Where(x => x.GetType() == typeof(AdoNetAppender) && appenderName == x.Name) .FirstOrDefault(); return(appender); } return(null); }
public static void SetConfig(FileInfo f, string connectionstring) { XmlConfigurator.ConfigureAndWatch(f); if (connectionstring.Length > 10) { Logger logger = infolog.Logger as Logger; AdoNetAppender appender = logger.GetAppender("AdoNetAppender") as AdoNetAppender; if (appender != null) { appender.ConnectionString = connectionstring; appender.ActivateOptions(); } logger = errorlog.Logger as Logger; appender = logger.GetAppender("AdoNetAppender") as AdoNetAppender; if (appender != null) { appender.ConnectionString = connectionstring; appender.ActivateOptions(); } } }
public void BufferingTest() { ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); int bufferSize = 5; AdoNetAppender adoNetAppender = new AdoNetAppender(); adoNetAppender.BufferSize = bufferSize; adoNetAppender.ConnectionType = "UnitTestProject1.Appender.AdoNet.Log4NetConnection"; adoNetAppender.ActivateOptions(); BasicConfigurator.Configure(rep, adoNetAppender); ILog log = LogManager.GetLogger(rep.Name, "BufferingTest"); for (int i = 0; i < bufferSize; i++) { log.Debug("Message"); Assert.IsNull(Log4NetCommand.MostRecentInstance); } log.Debug("Message"); Assert.AreEqual(bufferSize + 1, Log4NetCommand.MostRecentInstance.ExecuteNonQueryCount); }
public void LoggerSetup(string SQLServer, string SQLDatenBank, string SQLTable, string customContent2) { if (i == 0) { RawLayoutConverter rlc = new RawLayoutConverter(); AdoNetAppender adoNet = new AdoNetAppender(); AdoNetAppenderParameter logDate = new AdoNetAppenderParameter(); AdoNetAppenderParameter thread = new AdoNetAppenderParameter(); AdoNetAppenderParameter logLevel = new AdoNetAppenderParameter(); AdoNetAppenderParameter logLogger = new AdoNetAppenderParameter(); AdoNetAppenderParameter message = new AdoNetAppenderParameter(); AdoNetAppenderParameter exception = new AdoNetAppenderParameter(); AdoNetAppenderParameter customColoumn1 = new AdoNetAppenderParameter(); AdoNetAppenderParameter customColoumn2 = new AdoNetAppenderParameter(); Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); hierarchy.Root.AddAppender(adoNet); hierarchy.Root.Level = Level.All; hierarchy.Configured = true; log4net.Config.BasicConfigurator.Configure(adoNet); //logDate logDate.ParameterName = "@log_date"; logDate.DbType = System.Data.DbType.DateTime; logDate.Layout = new RawTimeStampLayout(); //thread thread.ParameterName = "@thread"; thread.DbType = System.Data.DbType.String; thread.Size = 255; thread.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%thread")); //logLevel logLevel.ParameterName = "@log_level"; logLevel.DbType = System.Data.DbType.String; logLevel.Size = 50; logLevel.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%level")); //logLogger logLogger.ParameterName = "@logger"; logLogger.DbType = System.Data.DbType.String; logLogger.Size = 255; logLogger.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%logger")); //message message.ParameterName = "@message"; message.DbType = System.Data.DbType.String; message.Size = 4000; message.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%message")); //exception exception.ParameterName = "@exception"; exception.DbType = System.Data.DbType.String; exception.Size = 2000; exception.Layout = (IRawLayout)rlc.ConvertFrom(new ExceptionLayout()); //customColoumn1 customColoumn1.ParameterName = "@customValue1"; customColoumn1.DbType = System.Data.DbType.String; customColoumn1.Size = 2000; customColoumn1.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%property{CustomColumn1}")); //customColoumn2 customColoumn2.ParameterName = "@customValue2"; customColoumn2.DbType = System.Data.DbType.String; customColoumn2.Size = 2000; customColoumn2.Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%property{CustomColumn2}")); adoNet.BufferSize = 1; adoNet.CommandType = System.Data.CommandType.Text; adoNet.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; adoNet.ConnectionString = "data source=" + SQLServer + "; initial catalog=" + SQLDatenBank + ";integrated security=true"; adoNet.CommandText = "INSERT INTO " + SQLTable + " ([Date],[Thread],[Level],[Logger],[Message],[Exception],[CustomColoumn1],[CustomColoumn2]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @customValue1, @customValue2)"; adoNet.AddParameter(logDate); adoNet.AddParameter(thread); adoNet.AddParameter(logLevel); adoNet.AddParameter(logLogger); adoNet.AddParameter(message); adoNet.AddParameter(exception); adoNet.AddParameter(customColoumn1); adoNet.AddParameter(customColoumn2); adoNet.ActivateOptions(); log4net.LogicalThreadContext.Properties["CustomColumn2"] = customContent2; i = 1; } else { log4net.LogicalThreadContext.Properties["CustomColumn2"] = customContent2; } }
internal void Setup( string applicationConfigurationFileFullName, bool useInternalRollingFileConfiguration, string businessLogFileFullname, string technicalLogFileFullname, bool useInternalAdoNetConfiguration, Type connectionType, string connectionStringName, string logTableName, LogLevel businessMinimumLogLevel = LogLevel.Trace, LogLevel technicalMinimumLogLevel = LogLevel.Trace, Func <object, Exception, string> exceptionFormatter = null) { UseInternalBusinessRollingFileConfiguration = useInternalRollingFileConfiguration && !String.IsNullOrWhiteSpace(businessLogFileFullname); UseInternalTechnicalRollingFileConfiguration = useInternalRollingFileConfiguration && !String.IsNullOrWhiteSpace(technicalLogFileFullname); UseInternalBusinessAdoNetConfiguration = useInternalAdoNetConfiguration; if (!UseInternalBusinessRollingFileConfiguration && !UseInternalTechnicalRollingFileConfiguration && !UseInternalBusinessAdoNetConfiguration) { if (!String.IsNullOrWhiteSpace(applicationConfigurationFileFullName)) { XmlConfigurator.Configure(LogManager.GetRepository(Assembly.GetEntryAssembly()), Parselog4NetConfigFile(applicationConfigurationFileFullName)); } else { XmlConfigurator.Configure(LogManager.GetRepository(Assembly.GetEntryAssembly())); } } else { var log4NetElement = GetDefaultConfiguration( businessLogFileFullname ?? String.Empty, businessMinimumLogLevel, technicalLogFileFullname ?? String.Empty, technicalMinimumLogLevel, connectionType ?? GetType(), connectionStringName ?? String.Empty, logTableName ?? String.Empty); if (!UseInternalTechnicalRollingFileConfiguration) { var technicalRollingFileAppenderElement = log4NetElement.DescendantsAndSelf().First(e => e.HasAttributes && e.Attributes("name").Any() && e.Attributes("name").ElementAt(0).Value == "TechnicalRollingFileAppender"); technicalRollingFileAppenderElement.Remove(); var technicalLoggerElement = log4NetElement.DescendantsAndSelf().First(e => e.HasAttributes && e.Attributes("ref").Any() && e.Attributes("ref").ElementAt(0).Value == "TechnicalRollingFileAppender"); technicalLoggerElement.Remove(); } if (!UseInternalBusinessRollingFileConfiguration) { var businessRollingFileAppenderElement = log4NetElement.DescendantsAndSelf().First(e => e.HasAttributes && e.Attributes("name").Any() && e.Attributes("name").ElementAt(0).Value == "BusinessRollingFileAppender"); businessRollingFileAppenderElement.Remove(); var businessLoggerElement = log4NetElement.DescendantsAndSelf().First(e => e.HasAttributes && e.Attributes("ref").Any() && e.Attributes("ref").ElementAt(0).Value == "BusinessRollingFileAppender"); businessLoggerElement.Remove(); } if (!UseInternalBusinessAdoNetConfiguration) { var businessRollingFileAppenderElement = log4NetElement.DescendantsAndSelf().First(e => e.HasAttributes && e.Attributes("name").Any() && e.Attributes("name").ElementAt(0).Value == "BusinessAdoNetAppender"); businessRollingFileAppenderElement.Remove(); var businessLoggerElement = log4NetElement.DescendantsAndSelf().First(e => e.HasAttributes && e.Attributes("ref").Any() && e.Attributes("ref").ElementAt(0).Value == "BusinessAdoNetAppender"); businessLoggerElement.Remove(); } XmlConfigurator.Configure(LogManager.GetRepository(Assembly.GetCallingAssembly()), log4NetElement.ToXmlElement()); } var loggers = LogManager.GetCurrentLoggers(Assembly.GetCallingAssembly()); if (!IsBusinessLogTableCreated) { AdoNetAppender adoNetAppender = null; if (loggers.Any()) { foreach (var adoAppender in loggers.Select( logger => logger.Logger.Repository.GetAppenders().FirstOrDefault(a => a.GetType() == typeof(AdoNetAppender))) .Where(adoAppender => adoAppender != null).OfType <AdoNetAppender>()) { adoNetAppender = adoAppender; break; } } if (adoNetAppender != null) { var connectionString = ConfigurationManager.ConnectionStrings[adoNetAppender.ConnectionStringName].ConnectionString; var field = typeof(AdoNetAppender).GetField("m_parameters", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); if (field == null) { Debug.WriteLine("Can not find field name 'm_parameters' in AdoNetAppender class using reflection."); throw new InvalidOperationException("Can not find field name 'm_parameters' in AdoNetAppender class using reflection.", new NullReferenceException("field")); } if (field.GetValue(adoNetAppender) is ArrayList parameters) { var fields = adoNetAppender.CommandText.Split(' ')[3].Split(',').Select(e => e.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "")).ToList(); logTableName = adoNetAppender.CommandText.Split(' ')[2]; var tableFieldsList = new List <string> { "[LOG_id] [bigint] IDENTITY(1,1) NOT NULL" }; for (var i = 0; i < parameters.Count; i++) { var parameter = (AdoNetAppenderParameter)parameters[i]; var tableField = new StringBuilder(); tableField.AppendFormat("[{0}] [{1}]{2} {3}", fields[i], TypeConvertor.ToSqlDbType(parameter.DbType), parameter.DbType == DbType.AnsiString || parameter.DbType == DbType.AnsiStringFixedLength || parameter.DbType == DbType.String || parameter.DbType == DbType.StringFixedLength || parameter.DbType == DbType.Xml ? String.Format("({0})", parameter.Size) : String.Empty, "NULL"); tableFieldsList.Add(tableField.ToString()); } using (var connection = new SqlConnection(connectionString)) { try { connection.Open(); using (var command = connection.CreateCommand()) { var nameParameter = command.CreateParameter(); nameParameter.DbType = DbType.String; nameParameter.ParameterName = "name"; nameParameter.Value = logTableName.ToLower(); command.Parameters.Add(nameParameter); command.CommandText = "IF NOT EXISTS (SELECT * FROM sys.tables WHERE LOWER(name) = @name) " + Environment.NewLine; command.CommandText += "BEGIN " + Environment.NewLine; command.CommandText += String.Format("CREATE TABLE {0} (", logTableName) + Environment.NewLine; foreach (var tableField in tableFieldsList) { command.CommandText += tableField + ", " + Environment.NewLine; } command.CommandText += String.Format("CONSTRAINT [PK_dbo.{0}] PRIMARY KEY CLUSTERED ", logTableName) + Environment.NewLine; command.CommandText += "( " + Environment.NewLine; command.CommandText += "[LOG_id] ASC " + Environment.NewLine; command.CommandText += ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] " + Environment.NewLine; command.CommandText += ") ON [PRIMARY] " + Environment.NewLine; command.CommandText += "END"; Debug.WriteLine("Creating logs table: " + command.CommandText); command.ExecuteNonQuery(); } } finally { if (connection.State == ConnectionState.Open) { connection.Close(); } } } } else { Console.WriteLine(@"dbCommand is null."); } } } IsBusinessLogTableCreated = true; }
public void ReallyAdoNetAppenderWithProperty2ByCode() { ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); #region AdoNetAppender & AdoNetAppenderParameter AdoNetAppender adoAppender = new AdoNetAppender(); adoAppender.Name = "AdoNetAppender"; adoAppender.CommandType = CommandType.Text; adoAppender.BufferSize = 1; //被设置为小于或等于1的值,则不会发生缓冲。 adoAppender.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; adoAppender.ConnectionString = "Data Source=192.168.0.214;Initial Catalog=SipscMemberLog;Integrated Security=False;Persist Security Info=False;User ID=sml;Password=sml123;"; adoAppender.CommandText = @"INSERT INTO [Student]([Id],[Name],[Age],[Phone],[Address],[AddDate])VALUES(@Id,@Name,@Age,@Phone,@Address,@AddDate)"; //@Id,@Name,@Age,@Phone,@Address,@AddDate //adoAppender.AddParameter(new AdoNetAppenderParameter() //{ // ParameterName = "@Id", // DbType = DbType.Guid, // Layout = new GuidPropertyLayout() //}); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@Id", DbType = DbType.String, Size = 50, Layout = new RawPropertyLayout() { Key = "Id" } }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@Name", DbType = DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%property{Name}")) }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@Age", DbType = DbType.Int32, Layout = new RawPropertyLayout() { Key = "Age" } }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@Phone", DbType = DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%property{Phone}")) }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@Address", DbType = DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%property{Address}")) }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@AddDate", DbType = DbType.DateTime, //Layout = new RawTimeStampLayout() Layout = new RawPropertyLayout() { Key = "AddDate" } }); #endregion adoAppender.ActivateOptions(); BasicConfigurator.Configure(rep, adoAppender); ILog log = LogManager.GetLogger(rep.Name, "ReallyAdoNetAppenderByCode"); var logEventData = new LoggingEventData() { Level = Level.Info, TimeStampUtc = DateTime.UtcNow, Properties = new PropertiesDictionary() }; logEventData.Properties["Id"] = Guid.NewGuid().ToString(); logEventData.Properties["Name"] = $"name{Guid.NewGuid().ToString().Substring(0, 10)}"; logEventData.Properties["Age"] = new Random().Next(5, 35); logEventData.Properties["Phone"] = "13012345678"; logEventData.Properties["Address"] = "苏州东大街"; logEventData.Properties["AddDate"] = DateTime.UtcNow.ToLocalTime(); log.Logger.Log(new LoggingEvent(logEventData)); Assert.IsTrue(true); }
public void ReallyAdoNetAppenderWithPropertyByCode() { ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); #region AdoNetAppender & AdoNetAppenderParameter AdoNetAppender adoAppender = new AdoNetAppender(); adoAppender.Name = "AdoNetAppender"; adoAppender.CommandType = CommandType.Text; adoAppender.BufferSize = 1; //被设置为小于或等于1的值,则不会发生缓冲。 adoAppender.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; adoAppender.ConnectionString = "Data Source=192.168.0.214;Initial Catalog=SipscMemberLog;Integrated Security=False;Persist Security Info=False;User ID=sml;Password=sml123;"; adoAppender.CommandText = @"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception],[Prop1],[Prop2],[Prop3]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @prop1, @prop2, @prop3)"; //日志记录时间:RawTimeStampLayout为默认的时间输出格式。 adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@log_date", DbType = DbType.DateTime, Layout = new RawTimeStampLayout() }); //线程号 adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@thread", Size = 255, //长度不可以省略,否则不会输出。 Layout = new Layout2RawLayoutAdapter(new PatternLayout("%thread")) }); //日志等级 adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@log_level", Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); //日志记录类名称 adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@logger", DbType = DbType.String, Size = 255, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%logger")) }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@message", DbType = DbType.String, Size = 4000, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%message")) }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@exception", DbType = DbType.String, Size = 2000, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%exception")) }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@prop1", DbType = DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%property{prop1}")) }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@prop2", DbType = DbType.Int32, //Size = 50, Layout = new RawPropertyLayout() { Key = "prop2" } }); adoAppender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@prop3", DbType = DbType.Guid, Layout = new GuidPropertyLayout() }); #endregion adoAppender.ActivateOptions(); BasicConfigurator.Configure(rep, adoAppender); ILog log = LogManager.GetLogger(rep.Name, "ReallyAdoNetAppenderByCode"); //log.Info($"Message {Guid.NewGuid().ToString()}"); //log.Error($"出错啦 {Guid.NewGuid().ToString()}", new Exception("模拟异常")); var logEventData = new LoggingEventData() { TimeStampUtc = DateTime.UtcNow, Level = Level.Info, Message = $"test-{Guid.NewGuid()}", Properties = new PropertiesDictionary() }; logEventData.Properties["prop1"] = "prop111"; logEventData.Properties["prop2"] = 111; log.Logger.Log(new LoggingEvent(logEventData)); Assert.IsTrue(true); }
static Logger() { NameValueCollection appSettings = ConfigurationManager.AppSettings; string connectString = appSettings["LogConnectString"]; string currentPath = AppDomain.CurrentDomain.BaseDirectory; string txtLogPath = string.Empty; string iisBinPath = AppDomain.CurrentDomain.RelativeSearchPath; if (!string.IsNullOrEmpty(iisBinPath)) { txtLogPath = Path.Combine(iisBinPath, @"Logs\ErrorLog.txt"); } else { txtLogPath = Path.Combine(currentPath, @"Logs\ErrorLog.txt"); } Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); TraceAppender tracer = new TraceAppender(); PatternLayout patternLayout = new PatternLayout(); patternLayout.ConversionPattern = LOG_PATTERN; patternLayout.ActivateOptions(); tracer.Layout = patternLayout; tracer.ActivateOptions(); hierarchy.Root.AddAppender(tracer); RollingFileAppender roller = new RollingFileAppender(); roller.Layout = patternLayout; roller.AppendToFile = true; roller.RollingStyle = RollingFileAppender.RollingMode.Size; roller.MaxSizeRollBackups = 4; roller.MaximumFileSize = "5MB";//"100KB"; roller.Encoding = Encoding.UTF8; roller.StaticLogFileName = true; roller.File = txtLogPath;//"dnservices.txt"; roller.ActivateOptions(); hierarchy.Root.AddAppender(roller); /////////////////////////ADO.NET AdoNetAppender adoAppender = new AdoNetAppender(); adoAppender.Name = "AdoNetAppender"; adoAppender.CommandType = CommandType.Text; adoAppender.BufferSize = 1; adoAppender.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; adoAppender.ConnectionString = connectString; adoAppender.CommandText = @"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"; adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@log_date", DbType = System.Data.DbType.DateTime, Layout = new log4net.Layout.RawTimeStampLayout() }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@thread", DbType = System.Data.DbType.String, Size = 255, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%thread")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@log_level", DbType = System.Data.DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@logger", DbType = System.Data.DbType.String, Size = 255, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%logger")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@message", DbType = System.Data.DbType.String, Size = 4000, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%message")) }); adoAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@exception", DbType = System.Data.DbType.String, Size = 4000, Layout = new Layout2RawLayoutAdapter(new ExceptionLayout()) }); adoAppender.ActivateOptions(); hierarchy.Root.AddAppender(adoAppender); hierarchy.Root.Level = Level.All; hierarchy.Configured = true; }
protected void Setup() { if (!_isSetup) { // add database appender for warnings var appender = new AdoNetAppender { BufferSize = 1, ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", CommandType = System.Data.CommandType.Text, ConnectionString = _connectionString, CommandText = "INSERT INTO RIFF.[SystemLog] ( Timestamp, Hostname, Level, Source, Message, Exception, Thread, AppDomain ) VALUES ( @timestamp, @hostname, @level, @source, @message, @exception, @thread, @appdomain )", Threshold = Level.Warn }; var rlc = new RawLayoutConverter(); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@timestamp", DbType = System.Data.DbType.String, Size = 50, Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%date{yyyy-MM-ddTHH:mm:ss.fffzzz}")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@hostname", DbType = System.Data.DbType.String, Size = 100, Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%property{log4net:HostName}")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@level", DbType = System.Data.DbType.String, Size = 50, Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%level")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@source", DbType = System.Data.DbType.String, Size = 255, Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%property{NDC}")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@message", DbType = System.Data.DbType.String, Size = 4000, Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%message")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@exception", DbType = System.Data.DbType.String, Size = 2000, Layout = (IRawLayout)rlc.ConvertFrom(new ExceptionLayout()) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@thread", DbType = System.Data.DbType.String, Size = 50, Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%thread")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@appdomain", DbType = System.Data.DbType.String, Size = 50, Layout = (IRawLayout)rlc.ConvertFrom(new PatternLayout("%appdomain")) }); appender.ActivateOptions(); var hierarchy = (Hierarchy)LogManager.GetRepository(); hierarchy.Root.AddAppender(appender); hierarchy.Configured = true; _isSetup = true; } _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); }
private static IAppender CreatAdoNetAppender(string connectionString) { var appender = new AdoNetAppender { Name = "AdoNetAppender", ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version = 1.0.3300.0, Culture = neutral, PublicKeyToken = b77a5c561934e089", ConnectionString = connectionString, BufferSize = 1, CommandText = "INSERT INTO Log ([Date],[Username],[Thread],[Level],[Logger],[Message],[Exception]) " + "VALUES (@log_date, @log_username, @thread, @log_level, @logger, @message, @exception)", CommandType = System.Data.CommandType.Text }; appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@log_date", DbType = System.Data.DbType.DateTime, Layout = new RawTimeStampLayout() }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@log_username", DbType = System.Data.DbType.String, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%aspnet-request{AUTH_USER}")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@thread", DbType = System.Data.DbType.String, Size = 255, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%thread")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@log_level", DbType = System.Data.DbType.String, Size = 50, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@logger", DbType = System.Data.DbType.String, Size = 255, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%logger")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@message", DbType = System.Data.DbType.String, Size = 4000, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%message")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@exception", DbType = System.Data.DbType.String, Size = 2000, Layout = new Layout2RawLayoutAdapter(new ExceptionLayout()) }); appender.ActivateOptions(); return(appender); }
private static IAppender GetAdoAppender() { RawLayoutConverter layoutConverter = new RawLayoutConverter(); var databaseAppender = new AdoNetAppender { BufferSize = 1, Name = "AdoAppender", //ConnectionString = "server=localhost;database=log; user=nelson;password=nightmare;port=3306", ConnectionString = @"Data Source=CLINSVNB03\SQLEXPRESS2012;Initial Catalog=CLINERP;User ID=sa;Password=P@ssw0rd;", CommandText = "INSERT INTO auditoria_ws (MENSAJE,URL,IP,PARAMETROS, PARAMETROS_GET, CLIENTE, METODO , FECHA, EXCEPCION) " + "VALUES (@message, @url, @ip, @params, @query, @cliente,@metodo, GETDATE(), @exception)", CommandType = System.Data.CommandType.Text, ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", //ConnectionType = "MySql.Data.MySqlClient.MySqlConnection, MySql.Data" }; databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@logdate", DbType = System.Data.DbType.DateTime, Layout = new RawTimeStampLayout() }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@message", DbType = System.Data.DbType.String, Size = 4000, Layout = (IRawLayout)layoutConverter.ConvertFrom(new PatternLayout("%m")) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@exception", DbType = System.Data.DbType.String, Size = 2000, Layout = (IRawLayout)layoutConverter.ConvertFrom(new ExceptionLayout()) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@level", DbType = System.Data.DbType.String, Size = 50, Layout = (IRawLayout)layoutConverter.ConvertFrom(new PatternLayout("%-5p")) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@logger", DbType = System.Data.DbType.String, Size = 255, Layout = (IRawLayout)layoutConverter.ConvertFrom(new PatternLayout("%c")) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@thread", DbType = System.Data.DbType.String, Size = 255, Layout = (IRawLayout)layoutConverter.ConvertFrom(new PatternLayout("%t")) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@url", DbType = System.Data.DbType.String, Size = 8000, Layout = (IRawLayout)layoutConverter.ConvertFrom(new UrlPatternLayout("%url%")) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@query", DbType = System.Data.DbType.String, Size = 8000, Layout = (IRawLayout)layoutConverter.ConvertFrom(new UrlPatternLayout("%query%")) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@ip", DbType = System.Data.DbType.String, Size = 50, Layout = (IRawLayout)layoutConverter.ConvertFrom(new UrlPatternLayout("%ip%")) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@cliente", DbType = System.Data.DbType.String, Size = 255, Layout = (IRawLayout)layoutConverter.ConvertFrom(new UrlPatternLayout("%cli%")) }); //metodo databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@metodo", DbType = System.Data.DbType.String, Size = 50, Layout = (IRawLayout)layoutConverter.ConvertFrom(new UrlPatternLayout("%method%")) }); databaseAppender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@params", DbType = System.Data.DbType.String, Layout = (IRawLayout)layoutConverter.ConvertFrom(new UrlPatternLayout("%params%")) }); databaseAppender.ActivateOptions(); return(databaseAppender); }
/// <summary> /// 如果不想自定义log4net 配置文件,该方法提供一个默认的logger,该logger直接写数据库; /// </summary> private static void SetDefaultLogger() { AdoNetAppender appender = new AdoNetAppender(); appender.BufferSize = 0; appender.ConnectionType = @"System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; appender.ConnectionString = @"data source=(LocalDb)\MSSQLLocalDB;initial catalog=log;integrated security=true;persist security info=True;"; appender.CommandText = @"INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception], [ComputerName]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @ComputerName)"; appender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@log_date", DbType = System.Data.DbType.DateTime, Size = 100, //Layout = new RawLayoutConverter().ConvertFrom(new PatternLayout("%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}")) as IRawLayout, Layout = new RawTimeStampLayout(), }); appender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@thread", DbType = System.Data.DbType.String, Size = 255, //Layout = new RawLayoutConverter().ConvertFrom(new PatternLayout("%thread")) as IRawLayout, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%thread")), }); appender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@log_level", DbType = System.Data.DbType.String, Size = 50, Layout = new RawLayoutConverter().ConvertFrom(new PatternLayout("%level")) as IRawLayout }); appender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@logger", DbType = System.Data.DbType.String, Size = 255, Layout = new RawLayoutConverter().ConvertFrom(new PatternLayout("%logger")) as IRawLayout }); appender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@message", DbType = System.Data.DbType.String, Size = 4000, Layout = new RawLayoutConverter().ConvertFrom(new PatternLayout("%message")) as IRawLayout }); appender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@exception", DbType = System.Data.DbType.String, Size = 2000, Layout = new RawLayoutConverter().ConvertFrom(new ExceptionLayout()) as IRawLayout }); appender.AddParameter(new AdoNetAppenderParameter() { ParameterName = "@ComputerName", DbType = System.Data.DbType.String, Size = 255, Layout = new RawLayoutConverter().ConvertFrom(new PatternLayout("%property{log4net:HostName}")) as IRawLayout, }); appender.ActivateOptions(); BasicConfigurator.Configure(appender); // 如果没有配置logger name,默认使用DefaultLogger这个名字; logger = LogManager.GetLogger(ConfigHelper.GetString("loggerName") ?? "DefaultLogger"); }
private static IAppender CreateAdoNetAppender(string connectionString) { var appender = new AdoNetAppender { Name = "AdoNetAppender", ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version = 1.0.3300.0, Culture = neutral, PublicKeyToken = b77a5c561934e089", ConnectionString = connectionString, BufferSize = 1, CommandText = @"INSERT INTO[LogEntries]( [LogDate], [Logger], [LogLevel], [Thread], [EntityFormalNamePlural], [EntityKeyValue], [UserName], [Message], [Exception]) VALUES(@log_date, @logger, @log_level, @thread, @entityFormalNamePlural, @entityKeyValue, @userName, @message, @exception)", CommandType = System.Data.CommandType.Text }; appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@log_date", DbType = System.Data.DbType.DateTime, Layout = new RawTimeStampLayout() }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@logger", DbType = System.Data.DbType.String, Size = 256, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%logger")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@log_level", DbType = System.Data.DbType.String, Size = 5, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%level")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@thread", DbType = System.Data.DbType.String, Size = 10, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%thread")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@entityFormalNamePlural", DbType = System.Data.DbType.String, Size = 30, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%property{EntityFormalNamePlural}")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "entityKeyValue", DbType = System.Data.DbType.Int32, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%property{EntityKeyValue}")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@userName", DbType = System.Data.DbType.String, Size = 256, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%property{UserName}|%aspnet-request{AUTH_USER}")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@message", DbType = System.Data.DbType.String, Size = 256, Layout = new Layout2RawLayoutAdapter(new PatternLayout("%message")) }); appender.AddParameter(new AdoNetAppenderParameter { ParameterName = "@exception", DbType = System.Data.DbType.String, Size = 10000, Layout = new Layout2RawLayoutAdapter(new ExceptionLayout()) }); appender.ActivateOptions(); return(appender); }