2016-07-07 97 views
1

我試圖登錄使用log4net的附加器在MySQL數據庫中的事件,但我不管理正確配置log4net的文件,如何爲mySQL配置log4net?

這裏是log4net.config:

<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> 
    <bufferSize value="1"/> 
    <lossy value="false"/> 
    <connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> 
    <!--connectionString value="Server=my_server_ip_or_name;Database=my_db_name; Uid=my_user_name;Pwd=my_passwd;"/--> 
    <connectionString value="server=my_server_ip_or_name;database=my_db_name; user=my_user_name;password=my_passwd;port=3306"/> 
    <commandText value="INSERT INTO Log (dtLog,lbThread,lbLevel,lbLogger,lbMessage,lbException,lbContext) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @context)"/> 
    <parameter> 
    <parameterName value="@log_date"/> 
    <dbType value="DateTime"/> 
    <layout type="log4net.Layout.RawTimeStampLayout"/> 
    </parameter> 
    <parameter> 
    <parameterName value="@thread"/> 
    <dbType value="String"/> 
    <size value="32"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%t"/> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@log_level"/> 
    <dbType value="String"/> 
    <size value="10"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%p"/> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@context"/> 
    <dbType value="String"/> 
    <size value="10"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%x"/> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@logger"/> 
    <dbType value="String"/> 
    <size value="512"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%c"/> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@message"/> 
    <dbType value="String"/> 
    <size value="4000"/> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%m"/> 
    </layout> 
    </parameter> 
    <parameter> 
    <parameterName value="@exception"/> 
    <dbType value="String"/> 
    <size value="4000"/> 
    <layout type="log4net.Layout.ExceptionLayout"/> 
    </parameter> 

</appender> 

在運行時,我得到但以下情況除外:

{"Object reference not set to an instance of an object. (C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Config\\machine.config line 295)"} 

對應於以下配置行:

<add name="MySqlSiteMapProvider" type="MySql.Web.SiteMap.MySqlSiteMapProvider, MySql.Web, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" /> 

的log4net的調試日誌以下錯誤:

iisexpress.exe Error: 0 : Authentication to host 'my_server_ip_or_name' for user 'my_user_name' using method 'mysql_native_password' failed with message: Access denied for user 'my_user_name'@'my_local_machine_name' (using password: YES)

log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Could not open database connection [server=my_server_ip_or_name;database=my_db_name; user=my_user_name;password=my_passwd;port=3306]. Connection string context [ConnectionString]. MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host 'my_server_ip_or_name' for user 'my_usr_name' using method 'mysql_native_password' failed with message: Access denied for user 'my_user_name'@'my_local_machine_name' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Access denied for user 'my_user_name'@'my_local_machine_name' (using password: YES)

我不明白爲什麼log4net的嘗試連接到我的本地計算機,而不是我配置的服務器。

任何想法是什麼在我的配置錯?

+0

可以通過倒票來解釋他們的原因,謝謝 – sinsedrix

+1

您的mysql用戶是否有權從您嘗試連接的IP地址進行連接? – TZHX

+1

提示未來:明確提到您匿名化配置數據,特別是當您的問題與所述配置有關時。如果你不這樣做,那麼人們必須做出的第一個假設是,你直接從指南中複製/粘貼東西,而根本不知道你需要改變任何東西。 – Gimby

回答

0

由於@TZHX注意到了,我不得不承認在遠程IP爲MySQL用戶遠程訪問:

GRANT ALL ON my_db_name.* TO [email protected]'my_remote_ip' IDENTIFIED BY 'my_passwd'; 

我也有發表意見的machine.config文件MySQL的站點地圖配置:

<!--add name="MySqlSiteMapProvider" type="MySql.Web.SiteMap.MySqlSiteMapProvider, MySql.Web, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/" /-->