## Introduction This document captures steps for adding application specific error yaml files ### Write app specific error yaml files Write error yamls for your application and place them in your application repository. Refer to *Host.errors.yaml* at https://github.com/openbmc/openpower-debug-collector/blob/master/org/open_power/ ### Makefile rules to run sdbus++ on error yaml files Modify the Makefile.am as shown below for generation of error.cpp and erorr.hpp ``` org/open_power/Host/error.hpp: ${srcdir}/org/open_power/Host.errors.yaml @mkdir -p `dirname $@` $(SDBUSPLUSPLUS) -r $(srcdir) error exception-header org.open_power.Host > $@ ``` ``` org/open_power/Host/error.cpp: ${srcdir}/org/open_power/Host.errors.yaml @mkdir -p `dirname $@` $(SDBUSPLUSPLUS) -r $(srcdir) error exception-cpp org.open_power.Host > $@ ``` ### Write native recipe to copy error yaml files Application specific error yaml files need to be copied to a known location so that phosphor-logging can generate error metadata by parsing the error yaml files. Refer to **do_install_append** method in **openpower-debug-collector-error-native.bb** at https://github.com/openbmc/openbmc/blob/master/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/debug/ ### Establish dependency with phosphor-logging Establish dependency with phosphor-logging to ensure that error yaml files are copied to a known location before phosphor logging parses the error yaml files Refer to **phosphor-logging-error-logs-native.bbappend** at https://github.com/openbmc/openbmc/blob/master/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/debug/ ### Generate application local elog-errors.hpp file Applications should be independently compilable so it cannot have a dependency on the elog-errors.hpp generated by phosphor-logging Generate application specific elog-errors.hpp using the elog-gen.py parser. In the future, elog-errors.hpp will be generated through autotools. The application specific elog-errors.hpp is for the build process and the elog-errors.hpp from phosphor-logging will be used during elog commit/report #### Example python tools/elog-gen.py -y /home/OpenBmc/openpower-occ-control/ -u ./tools/ -t tools/phosphor-logging/templates/ -m elog-gen-template.mako.hpp -o elog-errors.hpp ### Reporting error To report (commit) the error follow the below format ***report(metadata)*** #### *example* ``` #include #include "elog-errors.hpp" #Use application specific header file using error = sdbusplus::xyz::openbmc_project::Software::Version::Error::ManifestFileFailure; using metadata = phosphor::logging::xyz::openbmc_project::Software::Version::ManifestFileFailure; report(metadata::PATH(tarFilePath.c_str()));); ```