diff --git a/tools/elog-gen.py b/tools/elog-gen.py
index 9b9edac..ede916a 100755
--- a/tools/elog-gen.py
+++ b/tools/elog-gen.py
@@ -125,6 +125,13 @@
     parents = dict()
     metadata_process = dict()  # metadata that have the 'process' keyword set
 
+    # Verify the input mako file
+    template_path = os.path.join(i_template_dir, i_elog_mako)
+    if (not (os.path.isfile(template_path))):
+        print("Cannot find input template file " + template_path)
+        exit(1)
+    template_path = os.path.abspath(template_path)
+
     error_yamls = get_error_yaml_files(i_yaml_dir, i_test_dir)
 
     for error_yaml in error_yamls:
@@ -136,13 +143,6 @@
         # Verify the metadata yaml file
         meta_yaml = get_meta_yaml_file(error_yaml)
 
-        # Verify the input mako file
-        template_path = os.path.join(i_template_dir, i_elog_mako)
-        if (not (os.path.isfile(template_path))):
-            print("Cannot find input template file " + template_path)
-            exit(1)
-        template_path = os.path.abspath(template_path)
-
         get_elog_data(error_yaml,
                       meta_yaml,
                       error_yamls[error_yaml],
