在某些应用程序中,它是可取的重定向Gurobi的日志消息到一个特定的日志框架而不是使用日志文件或stdout。有许多不同的日志框架用于c#。最常用的抽象层Microsoft.Extensions.Logging,广泛manbet体育手机客户端是可用的。所有主要的日志框架提供一个提供者兼容这种抽象,微软Azure。
尽管Gurobi不提供直接链接到这个抽象层,它是相对容易使用回调机制实现:
公开课LoggerCallback: GRBCallback
{
私人只读的ILogger实例_logger;
公共LoggerCallback (ILogger实例日志)
{
_logger =记录器;
}
保护覆盖空回调()
{
如果(= = GRB.Callback.MESSAGE)
{
var味精= GetStringInfo (GRB.Callback.MSG_STRING);
如果(味精! = null)
{
var = LogLevel.Information程度;
如果(msg.StartsWith(“错误”))
{
水平= LogLevel.Error;
}
else if (msg.StartsWith(“警告”))
{
水平= LogLevel.Warning;
}
_logger。日志(水平,味精);
}
}
}
}
这个类可以使用如下。注意的一个实例ILogger实例
建立和传递给我们的是新的吗LoggerCallback
类。所有日志信息可以通过回调机制Gurobi将写入ILogger实例
实例通过其日志(水平,味精)
方法。
使用Gurobi;
使用Microsoft.Extensions.Logging;
var = LoggerFactory工厂。创建(磅= > lb.AddDebug ());
var记录器= factory.CreateLogger <程序> ();
var env = new GRBEnv ();
var模型= new GRBModel (env);
模型。AddVar(0,伽马射线爆发。无穷,1,伽马线暴。连续的," X ");
模型。ModelSense = GRB.MINIMIZE;
模型。SetCallback(新LoggerCallback (logger));
model.Optimize ();
model.Dispose ();
env.Dispose ();
评论
0评论
请登录留下你的评论。