spc-kiosk-pb/Library/FluentFTP/FtpTrace.cs
2019-06-16 14:12:09 +09:00

115 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace FluentFTP {
/// <summary>
/// Used for transaction logging and debug information.
/// </summary>
/// <example>The following example illustrates how to assist in debugging
/// FluentFTP by getting a transaction log from the server.
/// <code source="..\Examples\Debug.cs" lang="cs" />
/// </example>
public static class FtpTrace {
#if !CORE
static List<TraceListener> m_listeners = new List<TraceListener>();
static bool m_flushOnWrite = false;
/// <summary>
/// Gets or sets whether the trace listeners should be flushed or not
/// after writing to them. Default value is false.
/// </summary>
public static bool FlushOnWrite {
get {
return m_flushOnWrite;
}
set {
m_flushOnWrite = value;
}
}
/// <summary>
/// Add a TraceListner to the collection. You can use one of the predefined
/// TraceListeners in the System.Diagnostics namespace, such as ConsoleTraceListener
/// for logging to the console, or you can write your own deriving from
/// System.Diagnostics.TraceListener.
/// </summary>
/// <param name="listener">The TraceListener to add to the collection</param>
public static void AddListener(TraceListener listener) {
lock (m_listeners) {
m_listeners.Add(listener);
}
}
/// <summary>
/// Remove the specified TraceListener from the collection
/// </summary>
/// <param name="listener">The TraceListener to remove from the collection.</param>
public static void RemoveListener(TraceListener listener) {
lock (m_listeners) {
m_listeners.Remove(listener);
}
}
#endif
/// <summary>
/// Write to the TraceListeners.
/// </summary>
/// <param name="message">The message to write</param>
/// <param name="args">Optional variables if using a format string similar to string.Format()</param>
public static void Write(string message, params object[] args) {
Write(string.Format(message, args));
}
/// <summary>
/// Write to the TraceListeners
/// </summary>
/// <param name="message">The message to write</param>
public static void Write(string message) {
#if !CORE
TraceListener[] listeners;
lock (m_listeners) {
listeners = m_listeners.ToArray();
}
#endif
#if DEBUG
Debug.Write(message);
#endif
#if !CORE
foreach (TraceListener t in listeners) {
t.Write(message);
if (m_flushOnWrite) {
t.Flush();
}
}
#endif
}
/// <summary>
/// Write to the TraceListeners.
/// </summary>
/// <param name="message">The message to write</param>
/// <param name="args">Optional variables if using a format string similar to string.Format()</param>
public static void WriteLine(string message, params object[] args) {
Write(string.Format("{0}{1}", string.Format(message, args), Environment.NewLine));
}
/// <summary>
/// Write to the TraceListeners
/// </summary>
/// <param name="message">The message to write</param>
public static void WriteLine(string message) {
Write(string.Format("{0}{1}", message, Environment.NewLine));
}
}
}