我今天刚开始使用iText,所以我开始运行教程#1中的示例。不幸的是我收到了以下错误消息:
Exception thrown: 'System.NullReferenceException' in itext.io.dll
iText.IO.Log.LoggerFactory: No logger factory was bound. Defaulting to no-operation logger implementation.
iText.IO.Log.LoggerFactory: In order to bind a logger factory use iText.IO.Log.LoggerFactory.BindFactory().
显然我还没有设置一个名为LoggerFactory的东西。我该怎么做?
答案 0 :(得分:1)
在iText的java版本中,log4j用于处理错误消息记录 在.net版本中使用log4net 通常,如果使用NuGet安装iText,则会自动处理依赖性解析。
答案 1 :(得分:1)
我们遇到了与C#iText7项目相似的情况,其中
iText.IO.Log.LoggerFactory: No logger factory was bound. Defaulting to no-operation logger implementation.
iText.IO.Log.LoggerFactory: In order to bind a logger factory use iText.IO.Log.LoggerFactory.BindFactory().
每当我们尝试访问任何iText类时,每次尝试运行该过程时都会记录....
我们通过在程序开头添加以下代码来解决这个问题:
iText.IO.Log.NoOpLoggerFactory iTextLoggerFactory = new iText.IO.Log.NoOpLoggerFactory();
iText.IO.Log.LoggerFactory.BindFactory(iTextLoggerFactory);
希望这有帮助!
答案 2 :(得分:0)
对于那些正在寻找示例实现的人来说,这是我们为控制台日志记录所做的那样:
public class ConsoleLoggerFactory : iText.IO.Log.ILoggerFactory
{
private readonly iText.IO.Log.ILogger _logger = new ConsoleLogger();
public iText.IO.Log.ILogger GetLogger( Type type )
{
return _logger;
}
public iText.IO.Log.ILogger GetLogger( string name )
{
return _logger;
}
}
这是上述工厂使用的记录器:
public sealed class ConsoleLogger : iText.IO.Log.ILogger
{
public void Warn( string message )
{
Console.WriteLine( message );
}
public bool IsWarnEnabled()
{
return true;
}
public void Trace( string message )
{
Console.WriteLine( message );
}
public bool IsTraceEnabled()
{
return true;
}
public void Debug( string message )
{
Console.WriteLine( message );
}
public bool IsDebugEnabled()
{
return true;
}
public void Info( string message )
{
Console.WriteLine( message );
}
public bool IsInfoEnabled()
{
return true;
}
public void Error( string message, Exception exception )
{
Console.WriteLine( message );
Console.WriteLine( exception );
}
public bool IsErrorEnabled()
{
return true;
}
public void Error( string message )
{
Console.WriteLine( message );
}
}
然后,您可以在启动时将其与以下代码绑定:
var iTextLoggerFactory = new ConsoleLoggerFactory();
iText.IO.Log.LoggerFactory.BindFactory(iTextLoggerFactory);