diff --git a/lava_helper/lava_submit_jobs.py b/lava_helper/lava_submit_jobs.py
index 7f36f26..3a12d68 100755
--- a/lava_helper/lava_submit_jobs.py
+++ b/lava_helper/lava_submit_jobs.py
@@ -17,16 +17,23 @@
 
 import glob
 import argparse
+import logging
 from lava_helper import test_lava_dispatch_credentials
 
 
+_log = logging.getLogger("lavaci")
+
+
 def list_files_from_dir(user_args, job_dir=""):
     if job_dir == "":
         job_dir = user_args.job_dir
     file_list = []
+    resubmit_log = ""
+    if job_dir == "failed_jobs":
+        resubmit_log = "Resubmit for double check."
     for filename in glob.iglob(job_dir + '**/*.yaml', recursive=True):
         file_list.append(filename)
-        print("Found job {}".format(filename))
+        _log.info("Found job {file}. {extra_log}".format(file=filename, extra_log=resubmit_log))
     return file_list
 
 
@@ -46,9 +53,9 @@
 
         # The reason of failure will be reported to user by LAVA_RPC_connector
         if job_id is None and job_url is None:
-            print("Job failed")
+            _log.info("Job failed")
         else:
-            print("Job submitted at: " + job_url)
+            _log.info("Job submitted at: " + job_url)
             job_id_list.append(job_id)
 
     return job_id_list
diff --git a/lava_helper/lava_wait_jobs.py b/lava_helper/lava_wait_jobs.py
index 335008c..7a5ee43 100755
--- a/lava_helper/lava_wait_jobs.py
+++ b/lava_helper/lava_wait_jobs.py
@@ -54,8 +54,10 @@
     finished_jobs = lava.block_wait_for_jobs(job_list, user_args.dispatch_timeout, 5)
     unfinished_jobs = [item for item in job_list if item not in finished_jobs]
     for job in unfinished_jobs:
-        _log.info("Cancelling unfinished job %d", job)
+        _log.info("Cancelling unfinished job %d because of timeout.", job)
         lava.cancel_job(job)
+    if len(unfinished_jobs) > 0:
+        _log.info("Job fails because some test jobs have been cancelled.")
     if user_args.artifacts_path:
         for job, info in finished_jobs.items():
             info['job_dir'] = os.path.join(user_args.artifacts_path, "{}_{}".format(str(job), info['description']))
