Это полностью зависит от того, для чего вы хотите на самом деле, если бы это было только для регистрации исключений, то у меня был бы обработчик исключений для всего приложения (в зависимости от того, какой тип приложения), а затем входил бы оттуда. Тем не менее, я думаю, что вы ищете механизм для регистрации чего угодно из любого места в приложении, есть много библиотек, которые делают это, но если вы хотите свернуть свои собственные, вы можете сделать что-то вроде:
public sealed class Logging
{
// Constructor is lazily called.
Logging()
{
//Setup reference to logging file.
}
public static Logging Instance
{
get
{
return Nested.instance;
}
}
/// <summary>
/// Writes debug information.
/// </summary>
/// <param name="text">The text to write.</param>
public void Debug(String text)
{
//Log to file
}
/// <summary>
/// Writes warning message.
/// </summary>
/// <param name="text">The message to write.</param>
public void Warn(String text)
{
//Log to file
}
/// <summary>
/// Writes error message.
/// </summary>
/// <param name="text">The message to write.</param>
public void Error(String text)
{
//Log to file
}
/// <summary>
/// Writes error message.
/// </summary>
/// <param name="text">The message to write.</param>
/// <param name="e">An inner exception.</param>
public void Error(String text, Exception e)
{
//Log to file
}
/// <summary>
/// Private class to hold the instance of the singleton.
/// </summary>
class Nested
{
static Nested()
{
}
internal static readonly Logging instance = new Logging();
}
}
А затем использовать:
Logging.Instance.Debug("Hello World");