dotLess パーサーは例外をトラップし、Logger に出力します。これを実行する dotLess のソースからのスニペットは次のとおりですLessEngine.TransformToCss。
public string TransformToCss(string source, string fileName)
{
try
{
Ruleset ruleset = this.Parser.Parse(source, fileName);
Env env = new Env();
env.Compress = this.Compress;
Env env2 = env;
return ruleset.ToCSS(env2);
}
catch (ParserException exception)
{
this.Logger.Error(exception.Message);
}
return "";
}
Less.Parseオブジェクトを受け取るオーバーロードがあり、DotlessConfiguration使用できるいくつかのプロパティを提供します。
public class DotlessConfiguration
{
// Properties
public bool CacheEnabled { get; set; }
public Type LessSource { get; set; }
public Type Logger { get; set; }
public LogLevel LogLevel { get; set; }
public bool MinifyOutput { get; set; }
public int Optimization { get; set; }
public bool Web { get; set; }
}
Loggerプロパティのタイプが であることがわかりTypeます。あなたが提供するどんな型も実装しなければなりませんdotless.Core.Loggers.ILogger:
public interface ILogger
{
// Methods
void Debug(string message);
void Error(string message);
void Info(string message);
void Log(LogLevel level, string message);
void Warn(string message);
}
最初のスニペットで見たように、Error解析中にエラーが発生すると、ロガーのメソッドが呼び出されます。
さて、これらすべての 1 つの厄介な点は、実装する型のインスタンスがどのように正確にインスタンス化されるかということILoggerです。内部的に、dotLess は DLL に組み込まれた IoC コンテナーを使用します。メソッド呼び出しに続いて、最終的に呼び出しActivator.CreateInstanceて ILogger をインスタンス化するようです。
これが少なくともいくらか役立つことを願っています。