Here are the steps;
- Download the latest version of log4net library from Apache web site and add reference of log4net.dll in to your project.
- Go to your project's AssemblyInfo.cs file and add below line at the end of it. [assembly: log4net.Config.XmlConfigurator(Watch = true)]
- Go to your project's Web.config file and add these in it, just below <configuration> tag.
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net,
Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</configSections>
<!-- Log4net Logging Setup -->
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender,log4net">
<file value="c:\\mylogfile.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date
[%thread] %level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="FileAppender"/>
</root>
</log4net>
<!--<appSettings>
<add key="filePath" value="C:\folder_name\temp\"/>
</appSettings>-->
- Code you program. Here is my sample web service running an .exe and also creating its own log data.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.IO;
using System.Diagnostics;
using System.Security.Principal;
using System.Security;
using System.Runtime.InteropServices;
using System.Configuration;
using System.Web.Configuration;
using log4net;
namespace SampleWS
{
/// <summary>
/// Summary description for
Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script,
using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class SampleWebService : System.Web.Services.WebService
{
ILog log = log4net.LogManager.GetLogger(typeof(SampleWebService));
[WebMethod]
public bool SampleWorker(string filePath)
{
//.exe dosyası Web.config dosyası dizini seviyesine
kopyalanmalıdır.
string htm = ".htm";
log4net.Config.BasicConfigurator.Configure();
#region [ Notlar ]
//ILog log = log4net.LogManager.GetLogger(typeof(SampleWebService));
//log.Debug("test debug message");
//log.Warn("test
warn message");
//log.Error("test error message");
//log.Fatal("test fatal message");
//Console.ReadLine();
#endregion
try
{
string iFileName = Path.GetFileName(filePath);
string oFileName =
iFileName.Substring(0, iFileName.IndexOf(htm));
//string htmFilePath = filePath.Substring(0,
filePath.IndexOf(iFileName));
string htmFilePath = ConfigurationManager.AppSettings["filePath"].ToString();
string xlsFilePath = ConfigurationManager.AppSettings["filePath"].ToString();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.WorkingDirectory = xlsFilePath;
startInfo.FileName = Server.MapPath("test.exe");
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardOutput = true;
startInfo.Arguments = "-i:"
+ htmFilePath + iFileName + " -o:"
+ xlsFilePath + oFileName + ".xls";
//string htmlFilePathControl =
Path.GetFullPath(filePath);
string htmlFilePathControl = htmFilePath
+ iFileName;
string xlsFilePathControl = xlsFilePath
+ oFileName + ".xls";
if (File.Exists(htmlFilePathControl))
{
log.Info(iFileName + " isimli dosya
bulundu");
try
{
using (Process process = Process.Start(startInfo))
{
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput
= true;
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived);
process.BeginOutputReadLine();
process.BeginErrorReadLine();
log.Info("test.exe calistirildi");
process.WaitForExit();
if (process.ExitCode == 0)
{
process.Close();
log.Info(oFileName + "isimli .xls
olusturuldu");
return File.Exists(xlsFilePathControl); //Dosya olustuysa true doner
}
else
{
//string output = process.StandardOutput.ReadToEnd();
log.Error(oFileName + ".xls
olusturulamadi");
return false;
}
}
}
catch (Exception
ex)
{
log.Error(oFileName + ".xls olusturulamadi. Hata: " +
ex.Message);
return false;
//throw;
}
}
else
{
log.Error(iFileName + " isimli dosya bulunamadi");
return false;
}
}
catch (Exception
e)
{
log.Error("test.exe calismasi oncesinde
hata: " + e.Message);
return false;
//throw;
}
}
void process_ErrorDataReceived(object sender, DataReceivedEventArgs
e)
{
log.Error(e.Data);
}
void process_OutputDataReceived(object sender, DataReceivedEventArgs
e)
{
log.Error(e.Data);
}
}
}
- And here is how the log file looks like;
That's all! Happy coding!
Comments
Post a Comment