具有 String.Format 能力的记录方法
Logging Method with String.Format Capability
我有通用的日志方法,可以将条目写入日志文件、事件日志等
public static void Log(string logEntry)
{
// Write DateTime and logEntry to Log File, Event Log, etc.
}
我创建了重载以使用以下内容提供 String.Format() 功能:
public static void Log(params object[] logEntry)
{
// Purpose: Overload Log method to provide String.Format() functionality
// with first parameter being Format string.
// Example: Log("[{0:yyyy-MM-dd}] Name: {1}, Value: {2:#,##0.00}", DateTime.Now, "Blah, Blah, Blah", 12345.67890)
string formatString = logEntry[0].ToString();
object[] values = new object[logEntry.Length - 1];
for (int i = 1; i < logEntry.Length; i++)
{
values[i - 1] = logEntry[i];
}
Log(String.Format(formatString, values));
}
这没问题,但是有没有更好的方法来引用剩余的数组项以传递给 String.Format() 函数?或者从数组中删除元素 0 的更好方法?
我知道我也可以只使用 Log(String.Format(...,但我提供这个是为了更正式的目的。
你可以使用
public void Log(string message, params object[] args)
或者更好的是,使用现有的框架,例如NLog 或 Log4Net,其 API 类似于
public void Log(LogLevel level, string message, param object[] args)
和
public void Log(LogLevel level, Exception exception, string message, param object[] args)
我会将参数匹配到 String.Format()
。
public static void Log(string logEntry)
{
Log(logEntry, null);
}
public static void Log(string logEntry, params object[] values)
{
// Do whatever extra processing you need here.
Log(String.Format(logEntry, values));
}
我有通用的日志方法,可以将条目写入日志文件、事件日志等
public static void Log(string logEntry)
{
// Write DateTime and logEntry to Log File, Event Log, etc.
}
我创建了重载以使用以下内容提供 String.Format() 功能:
public static void Log(params object[] logEntry)
{
// Purpose: Overload Log method to provide String.Format() functionality
// with first parameter being Format string.
// Example: Log("[{0:yyyy-MM-dd}] Name: {1}, Value: {2:#,##0.00}", DateTime.Now, "Blah, Blah, Blah", 12345.67890)
string formatString = logEntry[0].ToString();
object[] values = new object[logEntry.Length - 1];
for (int i = 1; i < logEntry.Length; i++)
{
values[i - 1] = logEntry[i];
}
Log(String.Format(formatString, values));
}
这没问题,但是有没有更好的方法来引用剩余的数组项以传递给 String.Format() 函数?或者从数组中删除元素 0 的更好方法?
我知道我也可以只使用 Log(String.Format(...,但我提供这个是为了更正式的目的。
你可以使用
public void Log(string message, params object[] args)
或者更好的是,使用现有的框架,例如NLog 或 Log4Net,其 API 类似于
public void Log(LogLevel level, string message, param object[] args)
和
public void Log(LogLevel level, Exception exception, string message, param object[] args)
我会将参数匹配到 String.Format()
。
public static void Log(string logEntry)
{
Log(logEntry, null);
}
public static void Log(string logEntry, params object[] values)
{
// Do whatever extra processing you need here.
Log(String.Format(logEntry, values));
}