进程外运行作业
默认情况下,所有作业都在当前的Web进程中运行。如果发现事件处理开始变慢的时候,可以启动并扩展多个作业实例。通过在进程外运行作业,可以确保所有作业是否正常运行。
首先是要配置安装Redis,这样可以保证Exceptionless与作业之间能够进行通信
更新Web.config中的RunJobsInProcess值为false
更新作业的配置,有两种方法可选:
使用环境变量进行配置Exceptionless。新增环境变量Exceptionless_{SETTING NAME} (例如: Exceptionless_BaseURL, Exceptionless_ElasticSearchConnectionString)。这是官方推荐的方法,因为它更简单,而且当部署到azure时非常好用
打开App_Data\jobs文件夹,然后按照在根目录中Web.config的配置,再重新配置每个作业的xxx.exe.config。
在每个作业文件夹中都有一个run.bat文件,双击它就会运行这个作业。当然,也可以将这些作业全部设置为Windows服务在后台运行
更多设置
除了上面提到的设置,Exceptionless还支持很多自定义配置,下面是全部的设置列表,大家可根据自己的需要进行定制
列表按照这个格式进行排列:设置项 (数据类型,默认值)
Exceptionless除了支持记录Exception,也可以记录LogMessage、Broken Links 、Feature Usages
LogMessage
LogMessage支持多种级别的日志信息
Other
Trace
Debug
Info
Warn
Error
Fatal
Off
用法也很简单,直接在你想要记录日志的地方直接加一句
ExceptionlessClient.Default.CreateLog("日志信息", LogLevel.Debug).AddTags("tag1", "tag2").Submit();所以我们在应用的过程中,可以添加一个统一的接口
public interface ILogger { void Debug(string message, params string[] tags); void Error(string message, params string[] tags); void Fatal(string message, params string[] tags); void Info(string message, params string[] tags); void Off(string message, params string[] tags); void Other(string message, params string[] tags); void Trace(string message, params string[] tags); void Warn(string message, params string[] tags); } using Exceptionless; using Exceptionless.Logging; public class ExceptionlessLogger : ILogger { public void Debug(string message, params string[] tags) { ExceptionlessClient.Default.CreateLog(message, LogLevel.Debug).AddTags(tags).Submit(); } public void Error(string message, params string[] tags) { ExceptionlessClient.Default.CreateLog(message, LogLevel.Error).AddTags(tags).Submit(); } public void Fatal(string message, params string[] tags) { ExceptionlessClient.Default.CreateLog(message, LogLevel.Fatal).AddTags(tags).Submit(); } public void Info(string message, params string[] tags) { ExceptionlessClient.Default.CreateLog(message, LogLevel.Info).AddTags(tags).Submit(); } public void Off(string message, params string[] tags) { ExceptionlessClient.Default.CreateLog(message, LogLevel.Off).AddTags(tags).Submit(); } public void Other(string message, params string[] tags) { ExceptionlessClient.Default.CreateLog(message, LogLevel.Other).AddTags(tags).Submit(); } public void Trace(string message, params string[] tags) { ExceptionlessClient.Default.CreateLog(message, LogLevel.Trace).AddTags(tags).Submit(); } public void Warn(string message, params string[] tags) { ExceptionlessClient.Default.CreateLog(message, LogLevel.Warn).AddTags(tags).Submit(); } }