1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #include "faultlog_processor_factory.h" 16 17 #include "faultlog_freeze.h" 18 #include "faultlog_cppcrash.h" 19 #include "faultlog_events_processor.h" 20 #include "hiview_logger.h" 21 22 namespace OHOS { 23 namespace HiviewDFX { 24 DEFINE_LOG_LABEL(0xD002D11, "Faultlogger"); 25 FaultLogProcessorFactory()26FaultLogProcessorFactory::FaultLogProcessorFactory() 27 { 28 InitializeProcessors(); 29 } 30 InitializeProcessors()31void FaultLogProcessorFactory::InitializeProcessors() 32 { 33 faultLogProcessors[FaultLogType::CPP_CRASH] = []() { 34 return std::make_unique<FaultLogCppCrash>(); 35 }; 36 faultLogProcessors[FaultLogType::APP_FREEZE] = []() { 37 return std::make_unique<FaultLogFreeze>(); 38 }; 39 faultLogProcessors[FaultLogType::SYS_FREEZE] = faultLogProcessors[FaultLogType::APP_FREEZE]; 40 faultLogProcessors[FaultLogType::SYS_WARNING] = faultLogProcessors[FaultLogType::APP_FREEZE]; 41 } 42 CreateFaultLogProcessor(FaultLogType type)43std::unique_ptr<FaultLogProcessorInterface> FaultLogProcessorFactory::CreateFaultLogProcessor(FaultLogType type) 44 { 45 auto it = faultLogProcessors.find(type); 46 if (it != faultLogProcessors.end()) { 47 return it->second(); 48 } 49 return nullptr; 50 } 51 } // namespace HiviewDFX 52 } // namespace OHOS 53