// ------------------------------------------------- // SQL Logging // ----------- protected virtual void LogSql(Object[] args, Type[] argTypes) { // [SqlLogHandler] SqlLogHandler sqlLogHandler = GetSqlLogHander(); bool existsSqlLogHandler = sqlLogHandler != null; // [SqlResultHandler] SqlResultHandler sqlResultHandler = GetSqlResultHander(); bool existsSqlResultHandler = sqlResultHandler != null; // [SqlLogRegistry] InternalSqlLogRegistry sqlLogRegistry = InternalSqlLogRegistryLocator.Instance; bool existsSqlLogRegistry = sqlLogRegistry != null; if (IsLogEnabled() || existsSqlLogHandler || existsSqlResultHandler || existsSqlLogRegistry) { String displaySql = GetCompleteSql(args); if (IsLogEnabled()) { Log((IsContainsLineSeparatorInSql() ? GetLineSeparator() : "") + displaySql); } if (existsSqlLogHandler) // DBFlute provides { sqlLogHandler.Invoke(this.Sql, displaySql, args, argTypes); } if (existsSqlLogRegistry) // S2Container provides (But Actually DBFlute provides at CSharp) { sqlLogRegistry.Add(CreateInternalSqlLog(displaySql, args, argTypes)); } PutObjectToMapContext("df:DisplaySql", displaySql); } }
/// <summary> /// 写入SqlLog日志 /// </summary> /// <param name="log"></param> public static async Task WriteSqlLog(SqlLog log) { SqlLogHandler handler = new SqlLogHandler(log.OperateSql, log.EndDateTime, log.ElapsedTime, log.Parameter); handler.WriteLog(); }