Wednesday, January 2, 2008

C# Log4Net Oracle Appender

<log4net>
<appender name="Oracle" type="log4net.Appender.AdoNetAppender">
<connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, publicKeyToken=b77a5c561934e089"/>
<connectionString value="Data Source=TNSName;User ID=MyTableSpace;Password=password;"/>
<commandText value="INSERT INTO LOG_TABLE (DATETIME, THREAD, LOG_LEVEL, LOGGER ,MESSAGE, EXCEPTION, APPDOMAIN, NDC) VALUES (:log_date, :thread, :log_level, :logger, :message, :exception, :appdomain, :ndc)"/>
<bufferSize value="1"/>
<parameter>
<parameterName value=":log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value=":thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</parameter>
<parameter>
<parameterName value=":log_level"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value=":logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value=":message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</parameter>
<parameter>
<parameterName value=":exception"/>
<dbType value="String"/>
<size value="2000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%exception"/>
</layout>
</parameter>
<parameter>
<parameterName value=":appdomain"/>
<dbType value="String"/>
<size value="200"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%appdomain"/>
</layout>
</parameter>
<parameter>
<parameterName value=":ndc"/>
<dbType value="String"/>
<size value="2000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%ndc"/>
</layout>
</parameter>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="Oracle"/>
</root>
</log4net>



Log Table Script

CREATE TABLE LOG_TABLE
(
DATETIME TIMESTAMP(3),
THREAD VARCHAR2(255 BYTE),
LOG_LEVEL VARCHAR2(255 BYTE),
LOGGER VARCHAR2(255 BYTE),
MESSAGE VARCHAR2(4000 BYTE),
EXCEPTION VARCHAR2(2000 BYTE),
APPDOMAIN VARCHAR2(200 BYTE),
NDC VARCHAR2(2000 BYTE),
ID NUMBER(10) NOT NULL
)
TABLESPACE MyTableSpace
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;


CREATE UNIQUE INDEX LOG_TABLE_PK ON LOG_TABLE
(ID)
LOGGING
TABLESPACE MyTableSpace
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;


ALTER TABLE LOG_TABLE ADD (
CONSTRAINT LOG_TABLE_PK
PRIMARY KEY
(ID)
USING INDEX
TABLESPACE PWC
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
));

1 comment:

Allen said...

Isn't a sequence needed here to set the PK column ID

Check This Out!

More Links to Good Information