How to configure Log4Net to use the Oracle database to record logs, log4netoracle
Recently, when I was working on a project, I needed to add a log function. I needed to use Log4Net to record logs and insert data into the Oracle database. after a long time of research, I finally succeeded. Record the method for future query.
Directly write the implementation method in two steps:
1. Use NuGet Manager to add references to Oracle. ManagedDataAccess. dll.
2. Configure the specific file.
<? Xml version = "1.0"?>
<Configuration>
<ConfigSections>
<Section name = "log4net" type = "log4net. Config. Log4NetConfigurationSectionHandler, log4net"/>
</ConfigSections>
<Deleetask>
<Add key = "log4net. Internal. Debug" value = "true"/>
</AppSettings>
<Log4net>
<! -- Data generation script
Create table T_LogHistory
(
Id NUMBER not null,
Log_date DATE not null,
Log_thread VARCHAR2 (50) not null,
Log_level VARCHAR2 (50) not null,
Log_logger VARCHAR2 (150) not null,
Log_operator VARCHAR2 (50) not null,
Log_message VARCHAR2 (500) not null,
Log_iP VARCHAR2 (50) not null,
Log_machineName VARCHAR2 (50) not null,
Log_browser VARCHAR2 (50) not null,
Log_location VARCHAR2 (500) not null,
Log_exception VARCHAR2 (1500) not null,
Constraint pk_LogHistory primary key (id)
);
Create Sequence seq_LogHistory_ID
Minvalue 1
Max value 9999999999999999999999999999
Start with 1
Increment by 1
Nocache;
-->
<Appender name = "ADONetAppender" type = "log4net. Appender. ADONetAppender, log4net">
<! -- BufferSize indicates the buffer size, which is written to the database only when the log record exceeds the set value. -->
<BufferSize value = "1"/>
<! -- Or <param name = "BufferSize" value = "10"/> -->
<! -- Reference -->
<! -- <ConnectionType value = "System. Data. OracleClient. OracleConnection, System. Data. OracleClient, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089"/> -->
<ConnectionType value = "Oracle. ManagedDataAccess. Client. OracleConnection, Oracle. ManagedDataAccess, Version = 4.121.2.0, Culture = neutral, PublicKeyToken = 89b483f429c47342"/>
<! -- Connect to the database string -->
<ConnectionString value = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 127.0.0.1) (PORT = 80 )) (CONNECT_DATA = (SERVICE_NAME = databaseName); User Id = ********; Password = *******; "/>
<! -- Insert to table Log -->
<CommandText value = "insert into t_loghistory (id, log_date, log_thread, log_level, log_logger, log_operator, log_message, log_ip, logs, log_browser, log_location, log_exception) values (values,: logDate,: thread,: log_level,: logger,: operator,: message,: clientIP,: machineName,: browser,: location,: exception) "/>
<! -- Log record time. RawTimeStampLayout is the default time output format. -->
<Parameter>
<ParameterName value = ": logDate"/>
<DbType value = "DateTime"/>
<Layout type = "log4net. Layout. RawTimeStampLayout"/>
</Parameter>
<! -- Thread number -->
<Parameter>
<ParameterName value = ": thread"/>
<DbType value = "String"/>
<! -- The length cannot be omitted; otherwise, it cannot be output. -->
<Size value = "100"/>
<Layout type = "log4net. Layout. PatternLayout">
<ConversionPattern value = "% thread"/>
</Layout>
</Parameter>
<! -- Log Level -->
<Parameter>
<ParameterName value = ": log_level"/>
<DbType value = "String"/>
<Size value = "100"/>
<Layout type = "log4net. Layout. PatternLayout">
<ConversionPattern value = "% level"/>
</Layout>
</Parameter>
<! -- Log record class name -->
<Parameter>
<ParameterName value = ": logger"/>
<DbType value = "String"/>
<Size value = "200"/>
<Layout type = "log4net. Layout. PatternLayout">
<ConversionPattern value = "% logger"/>
</Layout>
</Parameter>
<! -- Operator. This is a custom output field. Use the re-implemented layout -->
<Parameter>
<ParameterName value = ": operator"/>
<! -- When Int32 is set, only the value of bufferSize <= "1" is output correctly. No reason is found. -->
<DbType value = "String"/>
<Size value = "200"/>
<Layout type = "log4net. Layout. PatternLayout">
<ConversionPattern value = "% username"/>
</Layout>
</Parameter>
<! -- IP Address -->
<Parameter>
<ParameterName value = ": clientIP"/>
<DbType value = "String"/>
<Size value = "20"/>
<Layout type = "Enterprise. Framework. Logger. Extensions. ClientIPLayout, Enterprise. Framework. Logger">
<ConversionPattern value = "% ClientIP"/>
</Layout>
</Parameter>
<! -- Machine name -->
<Parameter>
<ParameterName value = ": machineName"/>
<DbType value = "String"/>
<Size value = "100"/>
<Layout type = "log4net. Layout. PatternLayout">
<ConversionPattern value = "% property {log4net: HostName}"/>
</Layout>
</Parameter>
<! -- Browser -->
<Parameter>
<ParameterName value = ": browser"/>
<DbType value = "String"/>
<Size value = "50"/>
<Layout type = "Enterprise. Framework. Logger. Extensions. BrowserLayout">
<ConversionPattern value = "% Browser"/>
</Layout>
</Parameter>
<! -- Log message -->
<Parameter>
<ParameterName value = ": message"/>
<DbType value = "String"/>
<Size value = "3000"/>
<Layout type = "log4net. Layout. PatternLayout">
<ConversionPattern value = "% message"/>
</Layout>
</Parameter>
<! -- Record the log location -->
<Parameter>
<ParameterName value = ": location"/>
<DbType value = "String"/>
<Size value = "2000"/>
<Layout type = "log4net. Layout. PatternLayout">
<ConversionPattern value = "% location"/>
</Layout>
</Parameter>
<! -- Exception information. ExceptionLayout is the default format for abnormal output -->
<Parameter>
<ParameterName value = ": exception"/>
<DbType value = "String"/>
<Size value = "4000"/>
<Layout type = "log4net. Layout. ExceptionLayout"/>
</Parameter>
</Appender>
<Root>
<! -- High OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL low -->
<Level value = "ALL"/>
<Appender-ref = "ADONetAppender"/>
</Root>
<! -- <Logger name = "StellaLogger">
<Level value = "ALL"/>
<Appender-ref = "AdoNetAppender"/>
</Logger> -->
</Log4net>
</Configuration>
After completing the preceding two steps, Log4Net can insert records for Oracle databases.