Beispiel #1
0
        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();
    }
Beispiel #3
0
        /// <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;
        }
Beispiel #4
0
        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();
                }
            }
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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));
        }
Beispiel #8
0
        public void AdoNetAppenderExtensionsTest()
        {
            var adoNetAppender = new AdoNetAppender();

            adoNetAppender.SetConnectionString(_connectionString);

            Assert.IsTrue(!string.IsNullOrWhiteSpace(adoNetAppender.ConnectionString));
        }
Beispiel #9
0
            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);
            }
Beispiel #10
0
        /// <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);
        }
Beispiel #11
0
        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)
            });
        }
Beispiel #12
0
        //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();
        }
Beispiel #13
0
        /// <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);
        }
Beispiel #14
0
        // 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);
        }
Beispiel #15
0
        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);
            }
        }
Beispiel #17
0
            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);
            }
Beispiel #18
0
        //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);
        }
Beispiel #19
0
 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();
         }
     }
 }
Beispiel #20
0
        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;
     }
 }
Beispiel #22
0
        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;
        }
Beispiel #23
0
        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);
        }
Beispiel #24
0
        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);
        }
Beispiel #25
0
        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;
        }
Beispiel #26
0
        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);
        }
Beispiel #27
0
        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);
        }
Beispiel #28
0
        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);
        }
Beispiel #29
0
        /// <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);
        }