public void SubmitFaultReport(FaultReport report)
{
// get the log file data
var rootAppender = ((Hierarchy)LogManager.GetRepository()).Root.Appenders.OfType<FileAppender>().FirstOrDefault();
string filename = rootAppender != null ? rootAppender.File : string.Empty;
#if DEBUG
string serviceFilename = @"C:\Windows\Temp\GwupeService_Dev.log";
#else
string serviceFilename = @"C:\Windows\Temp\GwupeService.log";
#endif
if (!String.IsNullOrEmpty(filename))
{
try
{
var request = new FaultReportRq
{
report = report.UserReport,
subject = report.Subject,
version = Version(3),
platform = Environment.OSVersion.ToString()
};
try
{
request.log = Convert.ToBase64String(ExtractLog(filename));
}
catch (Exception e)
{
Logger.Error("Failed to extract log from " + filename, e);
request.report += "\n\n\nFailed to extract log from " + filename;
}
try
{
request.serviceLog = Convert.ToBase64String(ExtractLog(serviceFilename));
}
catch (Exception e)
{
Logger.Error("Failed to extract log from " + serviceFilename, e);
request.report += "\n\n\nFailed to extract log from " + filename;
}
try
{
var response = ConnectionManager.Connection.Request<FaultReportRq, FaultReportRs>(request);
}
catch (Exception e)
{
Logger.Error("Failed to send fault report to server", e);
}
}
catch (Exception e)
{
Logger.Error("Failed to read the log file", e);
}
}
else
{
Logger.Error("Failed to get the log file, cannot submit fault.");
}
}