0

我在我的.net應用程序中配置了一些adonetappender參數,我在列的數據庫中有一個固定的長度,但是在我的日誌數據中長度超過。從log4net的跟蹤日誌我在log4net的配置發現誤差log4net adonetappender寫入數據庫時​​出現異常MySql.Data.MySqlClient.MySqlException:數據時間過長

log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database 
MySql.Data.MySqlClient.MySqlException: Data too long for column 'action' at row 1 
    at MySql.Data.MySqlClient.MySqlStream.ReadPacket() 
    at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId) 
    at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId) 
    at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) 
    at MySql.Data.MySqlClient.MySqlDataReader.NextResult() 
    at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) 
    at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() 
    at log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events) 
    at log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events) 
log4net: Shutdown called on Hierarchy [log4net-default-repository] 

參數如下

<parameter> 
     <parameterName value="action" /> 
     <dbType value="String" /> 
     <size value="45" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%5c{1}.%M" /> 
     </layout> 
    </parameter> 

任何想法,我可以處理配置的最大長度是多少?

+0

您可以設置參數的[size屬性(https://logging.apache.org/log4net/release/ sdk/log4net.Appender.AdoNetAppenderParameter.Size.html)作爲「列中數據的最大大小(以字節爲單位)」。 – stuartd

+0

我該如何糾正它? –

+0

'' – stuartd

回答

0

我建議增加列長度,因爲你會丟失你的日誌。

如果你希望你的日誌是固定的大小,那麼你的設置應該工作。 或者將其設置爲「-1」或完全移除size屬性,這樣它現在將取決於表列的長度。

此外,如果你正在使用的存儲過程,我意識到你缺少「@」

<parameter> 
    <parameterName value="@action" /> 
    <dbType value="String" /> 
    <size value="-1" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%5c{1}.%M" /> 
    </layout> 
</parameter> 
相關問題