İletme günlükçüleri oluşturma

Günlükçülerin iletilmesi, çok işlemcili bir sistemde proje oluştururken izlemek istediğiniz olayları seçmenize izin vererek günlüğe kaydetme verimliliğini artırır. İletme günlükçülerini etkinleştirerek, istenmeyen olayların merkezi günlükçüye aşırı yüklemesini, derleme süresini yavaşlatmasını ve günlüğünüzü karmaşık hale gelmesini önleyebilirsiniz.

İletme günlükçüsünü oluşturmak için arabirimini IForwardingLogger uygulayabilir ve ardından yöntemlerini el ile uygulayabilir veya sınıfını ConfigurableForwardingLogger ve önceden yapılandırılmış yöntemlerini kullanabilirsiniz. (İkincisi çoğu uygulama için yeterli olacaktır.)

Olayları kaydetme ve bunlara yanıt verme

İletme günlükçüsü, çok işlemcili bir sistemdeki bir derleme sırasında ana derleme işlemi tarafından oluşturulan bir çalışan işlemi olan ikincil derleme altyapısı tarafından bildirilen derleme olayları hakkında bilgi toplar. Ardından iletme günlükçü, verdiğiniz yönergelere göre merkezi günlükçüye iletecek olayları seçer.

İzlemek istediğiniz olayları işlemek için iletme günlükçülerini kaydetmeniz gerekir. Olaylara kaydolmak için günlüğe kaydedenlerin yöntemini geçersiz kılması Initialize gerekir. Bu yöntem artık sistemdeki işlemci sayısına ayarlanabilen isteğe bağlı bir parametresini nodecountiçerir. (Varsayılan olarak değer 1'dir.)

İzleyebileceğiniz olaylara örnek olarak TargetStarted, ProjectStartedve ProjectFinishedverilebilir.

Çok işlemcili bir ortamda olay iletilerinin sırasız alınması olasıdır. Bu nedenle, iletme günlükçüsünde olay işleyicisini kullanarak olayları değerlendirmeniz ve merkezi günlükçüye iletmek üzere yeniden yönlendiriciye hangi olayların geçirileceğini belirlemek için programlamanız gerekir. Bunu başarmak için, iletmek istediğiniz olayları tanımlamaya yardımcı olmak için her iletiye eklenmiş sınıfını kullanabilir BuildEventContext ve sonra olayların adlarını sınıfa ConfigurableForwardingLogger (veya bir alt sınıfına) geçirebilirsiniz. Bu yöntemi kullandığınızda, olayları iletmek için başka belirli bir kodlama gerekmez.

İletme günlükçüsüsü belirtme

İletme günlükçüsü bir derlemeye derlendikten sonra, DERLEMEler sırasında MSBuild'e bunu kullanmasını söylemeniz gerekir. Bunu yapmak için , -FileLoggerParametersve anahtarlarını MSBuild.exe ile birlikte kullanın-FileLogger-DistributedFileLogger. anahtarı -FileLogger MSBuild.exe'ye günlükçüye doğrudan bağlı olduğunu bildirir. anahtar, -DistributedFileLogger düğüm başına bir günlük dosyası olduğu anlamına gelir. İletme günlükçüsünde parametreleri ayarlamak için anahtarını kullanın -FileLoggerParameters . Bu ve diğer MSBuild.exe anahtarları hakkında daha fazla bilgi için bkz. Komut satırı başvurusu.

Çok işlemcili günlükçüler

Çok işlemcili bir sistemde bir proje oluşturduğunuzda, her işlemciden gelen derleme iletileri otomatik olarak birleşik bir sırada araya kaydedilmez. Bunun yerine, her iletiye eklenmiş sınıfını kullanarak BuildEventContext bir ileti gruplandırma önceliği oluşturmanız gerekir. Çok işlemcili derleme hakkında daha fazla bilgi için bkz . Çok işlemcili bir ortamda günlüğe kaydetme.