Boost.Log: Name und Zeilennummer der Unterstützungsdatei

Ich versuche mein Team dazu zu bringen, sich von @ zu entfernelog4cxx und versuche @ zu benutzBoost.Log v2 stattdessen. Unser gegenwärtiger log4cxx pattern ist ziemlich einfach:

log4cxx::helpers::Properties prop;
prop.setProperty("log4j.rootLogger","DEBUG, A1");
prop.setProperty("log4j.appender.A1","org.apache.log4j.ConsoleAppender");
prop.setProperty("log4j.appender.A1.layout","org.apache.log4j.PatternLayout");
prop.setProperty("log4j.appender.A1.layout.ConversionPattern","%d{ABSOLUTE} %-5p [%c] %m%n");
log4cxx::PropertyConfigurator::configure(prop);

Ich habe jedoch keine Lösung gefunden, die das Drucken von Dateinamen und Zeilennummern unterstützt. Ich habe bisher ein @ gefundold post, aber es gibt keine klare Lösung (keine akzeptierte Lösung). Ich habe mir die Verwendung von @ angeschauBOOST_LOG_NAMED_SCOPE aber sie fühlen sich sehr hässlich an, da es unmöglich ist, die richtige Zeilennummer zu drucken, wenn mehrere davon innerhalb derselben Funktion verwendet werden.

Ich habe auch eine einfachere direkte Lösung gefunden,Hie. Das fühlt sich aber auch hässlich an, da der vollständige Pfad anstelle des Basisnamens ausgegeben wird (nicht konfigurierbar). So werden der vollständige Pfad und die Zeilennummer immer an einer festen Stelle gedruckt (vorexpr::smessage).

Ich habe auch dieses gefundenPos, das sieht nach einer alten Lösung aus.

Und schließlich war die vielversprechendste Lösung, die ich gefunden habe,Hie. Allerdings kompiliert es nicht mal für mich.

So ist meine Frage einfach: Wie kann ich Boost.Log v2 verwenden, um Dateinamen (nicht vollständigen Pfad) und Zeilennummer mit minimalem @ zu druckeFormatter Flexibilität (keine Lösung mitMACRO und__FILE__ / __LINE__ akzeptiert, bitte). Ich würde mich über eine Lösung freuen, bei der es nicht um @ gehBOOST_LOG_NAMED_SCOPE, wie beschriebenHie:

Wenn Sie stattdessen die Zeilennummern bestimmter Protokollsätze anzeigen möchten, können Sie am besten ein benutzerdefiniertes Makro definieren, mit dem Sie Protokolle schreiben. In diesem Makro können Sie den Dateinamen und die Zeilennummer als Attribute zum Datensatz hinzufügen (Sie können dafür Manipulatoren verwenden). Beachten Sie, dass Sie in diesem Fall diese Attribute nicht in Filtern verwenden können, aber wahrscheinlich nicht benötigen.