|
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.
|