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 をインスタンス化するようです。
これが少なくともいくらか役立つことを願っています。