我正在尝试使用Web Api 2和Owin向我的应用程序添加日志记录,所以我开始使用Microsoft Owin Logging,这需要一个ILogger和ILoggerFactory已经实现的,当我需要在STARTUP方法或任何Owin Middleware组件.
例如,当我在Startup方法中时,我可以使用以下方法创建记录器:
public void Configuration(IAppBuilder app)
{
// Creates configuration
var configuration = new HttpConfiguration();
// Configure WebApi Settings
WebApiConfig.Register(configuration);
app.SetLoggerFactory(new OwinLog4NetLoggerFactory("Default"));
var logger = app.CreateLogger<Startup>();
logger.WriteInformation("test log");
// Enabled WebApi in OWIN
app.UseWebApi(configuration);
}
Run Code Online (Sandbox Code Playgroud)
其中"OwinLog4NetLoggerFactory"是我的自定义ILoggerFactory实现.
到目前为止,这么好......但是......当我在实际的web api动作方法中时,如何创建记录器?...我尝试访问Request.GetOwinEnvironment()并且记录器工厂不在字典中.
例如:
public class AccountController : ApiController
{
public int Get(int id)
{
// Create logger here
return id + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建一个静态类,引用Logger Factory甚至是注入来将记录器添加到api控制器,但这对于应该存在的东西来说似乎太复杂了.
任何想法,将不胜感激.
如何增加Get或GetTaskAsync的超时时间?(使用Facebook C#SDK 6)
好像他们有15秒的超时时间。