From: <fab...@us...> - 2009-04-18 03:25:25
|
Revision: 4187 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4187&view=rev Author: fabiomaulo Date: 2009-04-18 03:25:17 +0000 (Sat, 18 Apr 2009) Log Message: ----------- Minor adjustments of SQL log Modified Paths: -------------- trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs trunk/nhibernate/src/NHibernate.Test/App.config Modified: trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2009-04-18 00:30:01 UTC (rev 4186) +++ trunk/nhibernate/src/NHibernate/AdoNet/AbstractBatcher.cs 2009-04-18 03:25:17 UTC (rev 4187) @@ -45,7 +45,7 @@ /// </summary> /// <param name="connectionManager">The <see cref="ConnectionManager"/> owning this batcher.</param> /// <param name="interceptor"></param> - public AbstractBatcher(ConnectionManager connectionManager, IInterceptor interceptor) + protected AbstractBatcher(ConnectionManager connectionManager, IInterceptor interceptor) { this.connectionManager = connectionManager; this.interceptor = interceptor; @@ -420,7 +420,10 @@ protected void LogCommand(IDbCommand command) { - factory.Settings.SqlStatementLogger.LogCommand(command, FormatStyle.Basic); + if (!string.IsNullOrEmpty(command.CommandText)) + { + factory.Settings.SqlStatementLogger.LogCommand(command, FormatStyle.Basic); + } } private void LogOpenPreparedCommand() Modified: trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs 2009-04-18 00:30:01 UTC (rev 4186) +++ trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs 2009-04-18 03:25:17 UTC (rev 4187) @@ -12,13 +12,17 @@ private int batchSize; private int totalExpectedRowsAffected; private SqlClientSqlCommandSet currentBatch; - private StringBuilder currentBatchCommandsLog = new StringBuilder(); + private StringBuilder currentBatchCommandsLog; public SqlClientBatchingBatcher(ConnectionManager connectionManager, IInterceptor interceptor) : base(connectionManager, interceptor) { batchSize = Factory.Settings.AdoBatchSize; currentBatch = new SqlClientSqlCommandSet(); + if(log.IsDebugEnabled) + { + currentBatchCommandsLog = new StringBuilder(); + } } public override int BatchSize @@ -30,13 +34,24 @@ public override void AddToBatch(IExpectation expectation) { totalExpectedRowsAffected += expectation.ExpectedRowCount; - log.Debug("Adding to batch:"); IDbCommand batchUpdate = CurrentCommand; if (log.IsDebugEnabled) { - string commandLoggedText = Factory.Settings.SqlStatementLogger.LogCommand(batchUpdate, FormatStyle.Basic); - currentBatchCommandsLog.Append("Batch command: ").AppendLine(commandLoggedText); + string lineWithParameters = Factory.Settings.SqlStatementLogger.GetCommandLineWithParameters(batchUpdate); + if (Factory.Settings.SqlStatementLogger.IsDebugEnabled) + { + Factory.Settings.SqlStatementLogger.LogCommand("Adding to batch:", batchUpdate, FormatStyle.Basic); + } + else + { + log.Debug("Adding to batch:" + lineWithParameters); + } + currentBatchCommandsLog.Append("Batch command: ").AppendLine(lineWithParameters); } + else + { + Factory.Settings.SqlStatementLogger.LogCommand(batchUpdate, FormatStyle.Basic); + } currentBatch.Append((System.Data.SqlClient.SqlCommand) batchUpdate); if (currentBatch.CountOfCommands >= batchSize) { @@ -49,9 +64,11 @@ log.Debug("Executing batch"); CheckReaders(); Prepare(currentBatch.BatchCommand); - - Factory.Settings.SqlStatementLogger.LogInfo(currentBatchCommandsLog.ToString()); - currentBatchCommandsLog = new StringBuilder(); + if (log.IsDebugEnabled) + { + log.Debug(currentBatchCommandsLog.ToString()); + currentBatchCommandsLog = new StringBuilder(); + } int rowsAffected = currentBatch.ExecuteNonQuery(); Expectations.VerifyOutcomeBatched(totalExpectedRowsAffected, rowsAffected); Modified: trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2009-04-18 00:30:01 UTC (rev 4186) +++ trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2009-04-18 03:25:17 UTC (rev 4187) @@ -26,49 +26,49 @@ public bool FormatSql { get; set; } - /// <summary> Log a SQL statement string. </summary> - /// <param name="statement">The SQL statement. </param> + public bool IsDebugEnabled + { + get { return log.IsDebugEnabled; } + } + + /// <summary> Log a IDbCommand. </summary> + /// <param name="message">Title</param> + /// <param name="command">The SQL statement. </param> /// <param name="style">The requested formatting style. </param> - public virtual void LogStatement(string statement, FormatStyle style) + public virtual void LogCommand(string message, IDbCommand command, FormatStyle style) { - if (!log.IsDebugEnabled && !LogToStdout) + if (!log.IsDebugEnabled && !LogToStdout || string.IsNullOrEmpty(command.CommandText)) { return; } + style = DetermineActualStyle(style); - statement = style.Formatter.Format(statement); - log.Debug(statement); + string statement = style.Formatter.Format(GetCommandLineWithParameters(command)); + string logMessage; + if (string.IsNullOrEmpty(message)) + { + logMessage= statement; + } + else + { + logMessage= message + statement; + } + log.Debug(logMessage); if (LogToStdout) { Console.Out.WriteLine("NHibernate: " + statement); } } - public virtual void LogInfo(string info) - { - log.Debug(info); - } - /// <summary> Log a IDbCommand. </summary> /// <param name="command">The SQL statement. </param> /// <param name="style">The requested formatting style. </param> - public virtual string LogCommand(IDbCommand command, FormatStyle style) + public virtual void LogCommand(IDbCommand command, FormatStyle style) { - if (log.IsDebugEnabled || LogToStdout) - { - style = DetermineActualStyle(style); - string statement = style.Formatter.Format(GetCommandLineWithParameters(command)); - log.Debug(statement); - if (LogToStdout) - { - Console.Out.WriteLine("NHibernate: " + statement); - } - return statement; - } - return null; + LogCommand(null, command, style); } - protected string GetCommandLineWithParameters(IDbCommand command) + public string GetCommandLineWithParameters(IDbCommand command) { string outputText; @@ -79,8 +79,8 @@ else { var output = new StringBuilder(command.CommandText.Length + (command.Parameters.Count * 20)); - output.Append(command.CommandText); - output.Append("; "); + output.Append(command.CommandText.TrimEnd(' ',';','\n')); + output.Append(";"); IDataParameter p; int count = command.Parameters.Count; @@ -93,13 +93,32 @@ } appendComma = true; p = (IDataParameter)command.Parameters[i]; - output.Append(string.Format("{0} = '{1}'", p.ParameterName, p.Value)); + output.Append(string.Format("{0} = {1}", p.ParameterName, GetParameterLogableValue(p))); } outputText = output.ToString(); } return outputText; } + public string GetParameterLogableValue(IDataParameter parameter) + { + if(parameter.Value == null || DBNull.Value.Equals(parameter.Value)) + { + return "null"; + } + else if (IsStringType(parameter.DbType)) + { + return string.Concat("'", parameter.Value.ToString(), "'"); + } + return parameter.Value.ToString(); + } + + private static bool IsStringType(DbType dbType) + { + return DbType.String.Equals(dbType) || DbType.AnsiString.Equals(dbType) + || DbType.AnsiStringFixedLength.Equals(dbType) || DbType.StringFixedLength.Equals(dbType); + } + private FormatStyle DetermineActualStyle(FormatStyle style) { return FormatSql ? style : FormatStyle.None; Modified: trunk/nhibernate/src/NHibernate.Test/App.config =================================================================== --- trunk/nhibernate/src/NHibernate.Test/App.config 2009-04-18 00:30:01 UTC (rev 4186) +++ trunk/nhibernate/src/NHibernate.Test/App.config 2009-04-18 03:25:17 UTC (rev 4187) @@ -125,6 +125,10 @@ <logger name="NHibernate.SQL"> <level value="OFF" /> </logger> + + <logger name="NHibernate.AdoNet.AbstractBatcher"> + <level value="OFF" /> + </logger> <logger name="NHibernate.Tool.hbm2ddl.SchemaExport"> <level value="ERROR" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |