aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/logger/composite_creator.cpp
blob: f85e9ebb69862c2b426e8e9d7fd1a4ef5f856a0a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "composite_creator.h" 
#include "composite.h" 
#include "uninitialized_creator.h" 
 
THolder<TLogBackend> TCompositeBackendCreator::DoCreateLogBackend() const { 
    auto res = MakeHolder<TCompositeLogBackend>(); 
    for (const auto& child : Children) { 
        res->AddLogBackend(child->CreateLogBackend()); 
    } 
    return std::move(res); 
} 
 
 
TCompositeBackendCreator::TCompositeBackendCreator() 
    : TLogBackendCreatorBase("composite") 
{} 
 
bool TCompositeBackendCreator::Init(const IInitContext& ctx) { 
    for (const auto& child : ctx.GetChildren("SubLogger")) { 
        Children.emplace_back(MakeHolder<TLogBackendCreatorUninitialized>()); 
        if (!Children.back()->Init(*child)) { 
            return false; 
        } 
    } 
    return true; 
} 
 
ILogBackendCreator::TFactory::TRegistrator<TCompositeBackendCreator> TCompositeBackendCreator::Registrar("composite"); 
 
void TCompositeBackendCreator::DoToJson(NJson::TJsonValue& value) const { 
    for (const auto& child: Children) { 
        child->ToJson(value["SubLogger"].AppendValue(NJson::JSON_MAP)); 
    } 
}