首页 > 解决方案 > Log4net 没有将数据插入到 oracle 数据库中?

问题描述

我尝试使用 log4net 将信息记录到数据库中,但我现在坚持使用它。不确定我做错了什么。无论我发送的任何消息都没有在数据库中收到,都没有显示任何错误

我的 logger.config 下面。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true "/>
  </appSettings>
  <log4net>
    <root>
      <level value="ALL"/>
      <appender-ref ref="AdoNetAppender_Oracle"/>
      <appender-ref ref="WebInformaction" />
      <appender-ref ref="WebError" />
      <appender-ref ref="AdoNetAppender"/>
    </root>
    <appender name="WebInformaction" type="log4net.Appender.AdoNetAppender, log4net">
      <connectionType value="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
      <connectionString value="Mydatasource" />
      <commandText value="INSERT INTO EVENTS_LOG (ID,LOG_DATE,THREAD,LOG_LEVEL,LOGGER,MESSAGE,EXCEPTION) VALUES (EVENTS_LOG_SEQ.nextval, :log_date, :thread, :log_level, :logger, :message, :exception)"/>
      <bufferSize value="0"/>
      <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.ExceptionLayout"/>
      </parameter>
    </appender>
    <logger name="Informaction">
      <level value="All"/>
      <appender-ref ref="Informaction" />
    </logger>
  </log4net>
</configuration>

访问它的代码:

using AuditResourcesTool.Common;
using AuditResourcesTool.Common.Attributes;
using AuditResourcesTool.Common.Enums;
using AuditResourcesTool.Common.Extensions;
using AuditResourcesTool.Common.Models;
using AuditResourcesTool.Common.Services;
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace AuditResourcesTool.Web.Controllers
{
    [ErrorHandler]
    // GET: Base
    public class BaseController : Controller
        {
            // public readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            public ILog Log = LogManager.GetLogger(typeof(BaseController));
            public ILog ErrorLog = LogManager.GetLogger("Error");
            public ILog InfoLog = LogManager.GetLogger("Informaction");

            public void Warning(string message)
            {
                //logger.Warn(message);
                InfoLog.Warn(message);
                AddToTempData(Alerts.WARNING.ToLabel(), message);
            }

            public void Success(string message)
            {
                //ogger.Info(message);
                InfoLog.Info(message);
                AddToTempData(Alerts.SUCCESS.ToLabel(), message);
            }

            public void Information(string message)
            {
                //logger.Info(message);
                InfoLog.Info(message);
                AddToTempData(Alerts.INFORMATION.ToLabel(), message);
            }
            public void Error(string message)
            {
                //logger.Error(message);
                ErrorLog.Error(message);
                AddToTempData(Alerts.ERROR.ToLabel(), message);
            }
            public void AddToTempData(string type, string message)
            {
                if (TempData.ContainsKey(type))
                {
                    TempData[type] = TempData[type] + Environment.NewLine + message;
                }
                else
                {
                    TempData.Add(type, message);
                }
            }


            public ActionResult Authorize()
            {
                return RedirectToAction("Index", "Study");
            }


            public bool IsLoggedIn()
            {
                return SessionService.GetObject(Constants.USER_SESSION_KEY) != null
                    && (SessionService.GetObject(Constants.USER_SESSION_KEY) is UserModel);
            }

            public UserModel GetCurrentUser()
            {
                return this.IsLoggedIn() ? (SessionService.GetObject(Constants.USER_SESSION_KEY) as UserModel) : null;
            }

            public HttpCookie SetCookie(string identity)
            {
                var cookie = new HttpCookie(Constants.USER_SESSION_KEY, identity);
                cookie.Expires = DateTime.Now.AddDays(10);
                Response.SetCookie(cookie);
                return cookie;
            }

            public string GetCookie()
            {
                var cookie = Request.Cookies[Constants.USER_SESSION_KEY];

                if (cookie != null)
                    return cookie.Value;

                return null;
            }

            public void Remove()
            {
                if (Request.Cookies.AllKeys.Contains(Constants.USER_SESSION_KEY))
                {
                    HttpCookie cookie = this.ControllerContext.HttpContext.Request.Cookies[Constants.USER_SESSION_KEY];
                    cookie.Expires = DateTime.Now.AddDays(-1);
                    Response.Cookies.Add(cookie);
                }
            }


        }
    
}

我的日志表:

CREATE TABLE EVENTS_LOG 
(
  ID NUMBER(10, 0) NOT NULL 
, LOG_DATE TIMESTAMP(3) 
, THREAD VARCHAR2(255 BYTE) 
, LOG_LEVEL VARCHAR2(50 BYTE) 
, LOGGER VARCHAR2(255 BYTE) 
, MESSAGE VARCHAR2(4000 BYTE) 
, EXCEPTION VARCHAR2(2000 BYTE) 
);

如果有人在我犯错的地方帮助我,那就太好了。提前致谢

标签: c#oracle-sqldeveloperlog4netlog4net-configurationlog4net-appender

解决方案


推荐阅读