using System;
using System.IO;
using System.Text;
namespace FastReport.Web
{
internal class WebLog
{
private object locker = new object();
private StringBuilder log = new StringBuilder();
private bool showStackTrace = false;
private string logFileName;
public string Text
{
get { return log.ToString(); }
}
public string LogFile
{
get { return logFileName; }
set { logFileName = value; }
}
public void Add(string line)
{
log.Append(line).Append("
");
}
public void Clear()
{
log = new StringBuilder();
}
public void AddError(Exception e)
{
lock (locker)
{
Add(String.Format("ERROR:
{0}", e.Message.Replace("\n", "
")));
if (showStackTrace)
Add(e.StackTrace);
}
}
public void Flush()
{
log.AppendLine().AppendLine();
if (!String.IsNullOrEmpty(logFileName))
{
try
{
lock (locker)
{
if (File.Exists(logFileName))
{
using (FileStream file = new FileStream(logFileName, FileMode.Append))
using (StreamWriter writer = new StreamWriter(file, Encoding.UTF8))
{
writer.Write(log);
}
}
else
{
using (FileStream file = new FileStream(logFileName, FileMode.Create))
using (StreamWriter writer = new StreamWriter(file, Encoding.UTF8))
{
writer.Write(log);
}
}
}
}
catch
{
//
}
}
}
public WebLog(bool trace)
{
showStackTrace = trace;
}
}
}