151151#include < ROOT/TIOFeatures.hxx>
152152
153153#include " haddCommandLineOptionsHelp.h"
154+ #include " logging.hxx"
154155
155156#include < climits>
156157#include < cstdlib>
168169
169170// //////////////////////////////////////////////////////////////////////////////
170171
171- // NOTE: TFileMerger will use PrintLevel = gHaddVerbosity - 1. If PrintLevel is < 1, it will print nothing, otherwise
172+ // NOTE: TFileMerger will use PrintLevel = GetLogVerbosity() - 1. If PrintLevel is < 1, it will print nothing, otherwise
172173// it will print everything. To give some granularity to hadd, we do the following:
173- // gHaddVerbosity = 0: only print hadd errors
174- // gHaddVerbosity = 1: only print hadd errors + warnings
175- // gHaddVerbosity = 2: print hadd errors + warnings and TFileMerger messages
176- // gHaddVerbosity > 2: print all hadd and TFileMerger messages.
174+ // LogVerbosity = 0: only print hadd errors
175+ // LogVerbosity = 1: only print hadd errors + warnings
176+ // LogVerbosity = 2: print hadd errors + warnings and TFileMerger messages
177+ // LogVerbosity > 2: print all hadd and TFileMerger messages.
177178static constexpr int kDefaultHaddVerbosity = 2 ;
178- static int gHaddVerbosity = kDefaultHaddVerbosity ;
179-
180- namespace {
181-
182- class NullBuf : public std ::streambuf {
183- public:
184- int overflow (int c) final { return c; }
185- };
186-
187- class NullStream : public std ::ostream {
188- NullBuf fBuf ;
189-
190- public:
191- NullStream () : std::ostream(&fBuf ) {}
192- };
193-
194- } // namespace
195-
196- static NullStream &GetNullStream ()
197- {
198- static NullStream nullStream;
199- return nullStream;
200- }
201-
202- static inline std::ostream &Err ()
203- {
204- std::cerr << " Error in <hadd>: " ;
205- return std::cerr;
206- }
207-
208- static inline std::ostream &Warn ()
209- {
210- std::ostream &s = gHaddVerbosity < 1 ? GetNullStream () : std::cerr;
211- s << " Warning in <hadd>: " ;
212- return s;
213- }
214-
215- static inline std::ostream &Info (int minLevel)
216- {
217- std::ostream &s = gHaddVerbosity < minLevel ? GetNullStream () : std::cerr;
218- s << " Info in <hadd>: " ;
219- return s;
220- }
221179
222180using IntFlag_t = uint32_t ;
223181
@@ -658,6 +616,8 @@ static Int_t ParseFilterFile(const std::optional<std::string> &filterFileName,
658616
659617int main (int argc, char **argv)
660618{
619+ InitLog (" hadd" , kDefaultHaddVerbosity );
620+
661621 const auto argsOpt = ParseArgs (argc, argv);
662622 if (!argsOpt)
663623 return 1 ;
@@ -670,7 +630,7 @@ int main(int argc, char **argv)
670630
671631 ROOT::TIOFeatures features = args.fFeatures .value_or (ROOT::TIOFeatures{});
672632 Int_t maxopenedfiles = args.fMaxOpenedFiles .value_or (0 );
673- gHaddVerbosity = args.fVerbosity .value_or (kDefaultHaddVerbosity );
633+ SetLogVerbosity ( args.fVerbosity .value_or (kDefaultHaddVerbosity ) );
674634 Int_t newcomp = args.fCompressionSettings .value_or (-1 );
675635 TString cacheSize = args.fCacheSize .value_or (" " );
676636
@@ -731,7 +691,7 @@ int main(int argc, char **argv)
731691
732692 TFileMerger fileMerger (kFALSE , kFALSE );
733693 fileMerger.SetMsgPrefix (" hadd" );
734- fileMerger.SetPrintLevel (gHaddVerbosity - 1 );
694+ fileMerger.SetPrintLevel (GetLogVerbosity () - 1 );
735695 if (maxopenedfiles > 0 ) {
736696 fileMerger.SetMaxOpenedFiles (maxopenedfiles);
737697 }
@@ -896,7 +856,7 @@ int main(int argc, char **argv)
896856 auto parallelMerge = [&](int start) {
897857 TFileMerger mergerP (kFALSE , kFALSE );
898858 mergerP.SetMsgPrefix (" hadd" );
899- mergerP.SetPrintLevel (gHaddVerbosity - 1 );
859+ mergerP.SetPrintLevel (GetLogVerbosity () - 1 );
900860 if (maxopenedfiles > 0 ) {
901861 mergerP.SetMaxOpenedFiles (maxopenedfiles / nProcesses);
902862 }
0 commit comments