diff --git a/client/cros/video/helper_logger.py b/client/cros/video/helper_logger.py
new file mode 100644
index 0000000..3fd320d
--- /dev/null
+++ b/client/cros/video/helper_logger.py
@@ -0,0 +1,112 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import glob
+import os
+import logging
+import subprocess
+
+def chrome_vmodule_flag():
+    """Return vmodule flag for chrome to enable VDAs/VEAs/JDAs/V4L2IP logs"""
+    logging_patterns = ['*/media/gpu/*video_decode_accelerator.cc=2',
+                        '*/media/gpu/*video_encode_accelerator.cc=2',
+                        '*/media/gpu/*jpeg_decode_accelerator.cc=2',
+                        '*/media/gpu/v4l2_image_processor.cc=2']
+    chrome_video_vmodule_flag = '--vmodule=' + ','.join(logging_patterns)
+    logging.info('chrome video vmodule flag: %s', chrome_video_vmodule_flag)
+    return chrome_video_vmodule_flag
+
+
+def video_log_wrapper(func):
+    """
+    Return decorator that make verbose video logs enable
+    before test and make them disable after completing test.
+
+    @param func: function, the test function, e.g., run_once
+    @returns decorator function
+    """
+    #TODO(hiroh): test kernel log on elm/oak (see crbug.com/697733)
+    vlog = VideoLog()
+
+    #videobuf2 log
+    files = glob.glob('/sys/module/videobuf2_*/parameters/debug')
+    vlog.add_log(files,
+                 ['1'] * len(files),
+                 ['0'] * len(files),
+                 'videobuf2 log')
+
+    #s5p_mfc log
+    fpath = '/sys/module/s5p_mfc/parameters/debug'
+    if os.path.exists(fpath):
+        vlog.add_log([fpath],
+                     ['2'],
+                     ['0'],
+                     's5p_mfc log')
+
+    def call(*args, **kwargs):
+        """
+        Enable logs before the test, execute the test and disable logs
+        after the test.
+
+        In any case, it is guranteed to disable logs.
+        """
+        with vlog:
+            return func(*args, **kwargs)
+
+    return call
+
+
+def cmdexec_with_log(cmd, info_message):
+    """
+    Execute command, logging infomation message.
+
+    @param cmd: string, command to be executed
+    @param info_message: string, the messages to be shown in log message
+    """
+    try:
+        logging.info('%s : %s', info_message, cmd)
+        subprocess.check_call(cmd, shell=True)
+    except subprocess.CalledProcessError:
+        logging.warning('Fail to execute command [%s] : %s',
+                        info_message, cmd)
+
+
+class VideoLog:
+    """
+    Enable/Disable video logs.
+    """
+    def __init__(self):
+        self.logs = []
+
+    def add_log(self, files, enable_values, disable_values, log_name):
+        """
+        Add new log
+
+        @param files: list of string, file paths
+        @param enable_values: list of string, the list of value
+                              to write to each file path for enabling
+        @param disable_values: list of string, the list of value
+                               to write to each file path for disabling
+        @param log_name: string, name to be shown in log message
+        """
+        self.logs.append({'files': files,
+                          'enable values': enable_values,
+                          'disable values': disable_values,
+                          'log name': log_name})
+
+    def __enter__(self):
+        """Enable logs"""
+        for log in self.logs:
+            log_name = log['log name']
+            for f, ev in zip(log['files'], log['enable values']):
+                cmdexec_with_log('echo %s > %s' % (ev, f),
+                                 '%s enable' % log_name)
+
+    def __exit__(self, exception_type, exception_value, traceback):
+        """Disable logs"""
+        for log in self.logs:
+            log_name = log['log name']
+            for f, dv in zip(log['files'], log['disable values']):
+                cmdexec_with_log('echo %s > %s' % (dv, f),
+                                 '%s disable' % log_name)
diff --git a/client/site_tests/video_ChromeHWDecodeUsed/video_ChromeHWDecodeUsed.py b/client/site_tests/video_ChromeHWDecodeUsed/video_ChromeHWDecodeUsed.py
index e97c284..ea84db3 100755
--- a/client/site_tests/video_ChromeHWDecodeUsed/video_ChromeHWDecodeUsed.py
+++ b/client/site_tests/video_ChromeHWDecodeUsed/video_ChromeHWDecodeUsed.py
@@ -13,6 +13,7 @@
 from autotest_lib.client.cros.video import histogram_verifier
 from autotest_lib.client.cros.video import constants
 from autotest_lib.client.cros.video import native_html5_player
+from autotest_lib.client.cros.video import helper_logger
 
 
 class video_ChromeHWDecodeUsed(test.test):
@@ -41,7 +42,7 @@
 
         return False
 
-
+    @helper_logger.video_log_wrapper
     def run_once(self, codec, is_mse, video_file, arc_mode=None):
         """
         Tests whether VDA works by verifying histogram for the loaded video.
@@ -53,8 +54,10 @@
         if self.is_skipping_test(codec):
             raise error.TestNAError('Skipping test run on this board.')
 
-        with chrome.Chrome(arc_mode=arc_mode,
-                           init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                arc_mode=arc_mode,
+                init_network_controller=True) as cr:
             # This will execute for MSE video by accesing shaka player
             if is_mse:
                  tab1 = cr.browser.tabs.New()
diff --git a/client/site_tests/video_ChromeRTCHWDecodeUsed/video_ChromeRTCHWDecodeUsed.py b/client/site_tests/video_ChromeRTCHWDecodeUsed/video_ChromeRTCHWDecodeUsed.py
index 03d9f0e..79fa165 100755
--- a/client/site_tests/video_ChromeRTCHWDecodeUsed/video_ChromeRTCHWDecodeUsed.py
+++ b/client/site_tests/video_ChromeRTCHWDecodeUsed/video_ChromeRTCHWDecodeUsed.py
@@ -8,6 +8,7 @@
 from autotest_lib.client.common_lib import error, file_utils, utils
 from autotest_lib.client.common_lib.cros import chrome
 from autotest_lib.client.cros.video import histogram_verifier
+from autotest_lib.client.cros.video import helper_logger
 
 
 # Chrome flags to use fake camera and skip camera permission.
@@ -57,7 +58,7 @@
             os.path.join(self.bindir, 'loopback.html')))
         tab.WaitForDocumentReadyStateToBeComplete()
 
-
+    @helper_logger.video_log_wrapper
     def run_once(self, video_name, histogram_name, histogram_bucket_val):
         if self.is_skipping_test():
             raise error.TestNAError('Skipping test run on this board.')
@@ -69,6 +70,7 @@
 
         # Start chrome with test flags.
         EXTRA_BROWSER_ARGS.append(FAKE_FILE_ARG % local_path)
+        EXTRA_BROWSER_ARGS.append(helper_logger.chrome_vmodule_flag())
         with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS,
                            init_network_controller=True) as cr:
             # Open WebRTC loopback page.
diff --git a/client/site_tests/video_ChromeRTCHWEncodeUsed/video_ChromeRTCHWEncodeUsed.py b/client/site_tests/video_ChromeRTCHWEncodeUsed/video_ChromeRTCHWEncodeUsed.py
index e7d4e51..bee1e60 100755
--- a/client/site_tests/video_ChromeRTCHWEncodeUsed/video_ChromeRTCHWEncodeUsed.py
+++ b/client/site_tests/video_ChromeRTCHWEncodeUsed/video_ChromeRTCHWEncodeUsed.py
@@ -10,6 +10,7 @@
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib import file_utils
 from autotest_lib.client.common_lib.cros import chrome
+from autotest_lib.client.cros.video import helper_logger
 
 
 # Chrome flags to use fake camera and skip camera permission.
@@ -86,7 +87,7 @@
                     sleep_interval=1)
             _histogram_success(histogram, bucket)
 
-
+    @helper_logger.video_log_wrapper
     def run_once(self, arc_mode=None):
         # Download test video.
         url = DOWNLOAD_BASE + VIDEO_NAME
@@ -95,6 +96,7 @@
 
         # Start chrome with test flags.
         EXTRA_BROWSER_ARGS.append(FAKE_FILE_ARG % local_path)
+        EXTRA_BROWSER_ARGS.append(helper_logger.chrome_vmodule_flag())
         with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS,
                            arc_mode=arc_mode,
                            init_network_controller=True) as cr:
diff --git a/client/site_tests/video_ChromeVidResChangeHWDecode/video_ChromeVidResChangeHWDecode.py b/client/site_tests/video_ChromeVidResChangeHWDecode/video_ChromeVidResChangeHWDecode.py
index 6497e0d..73347bd 100755
--- a/client/site_tests/video_ChromeVidResChangeHWDecode/video_ChromeVidResChangeHWDecode.py
+++ b/client/site_tests/video_ChromeVidResChangeHWDecode/video_ChromeVidResChangeHWDecode.py
@@ -11,13 +11,14 @@
 from autotest_lib.client.cros.video import histogram_verifier
 from autotest_lib.client.cros.video import constants
 from autotest_lib.client.cros.video import native_html5_player
+from autotest_lib.client.cros.video import helper_logger
 
 
 class video_ChromeVidResChangeHWDecode(test.test):
     """Verify that VDA works in Chrome for video with resolution changes."""
     version = 1
 
-
+    @helper_logger.video_log_wrapper
     def run_once(self, video_file, video_len):
         """Verify VDA and playback for the video_file.
 
@@ -25,7 +26,9 @@
         @param video_len : test video file length.
         """
 
-        with chrome.Chrome(init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                init_network_controller=True) as cr:
             shutil.copy2(constants.VIDEO_HTML_FILEPATH, self.bindir)
             cr.browser.platform.SetHTTPServerDirectories(self.bindir)
             tab1 = cr.browser.tabs[0]
diff --git a/client/site_tests/video_GlitchDetection/video_GlitchDetection.py b/client/site_tests/video_GlitchDetection/video_GlitchDetection.py
index 840c932..d9779c8 100755
--- a/client/site_tests/video_GlitchDetection/video_GlitchDetection.py
+++ b/client/site_tests/video_GlitchDetection/video_GlitchDetection.py
@@ -17,6 +17,7 @@
 from autotest_lib.client.cros.video import constants
 from autotest_lib.client.cros.video import frame_checksum_utils
 from autotest_lib.client.cros.video import native_html5_player
+from autotest_lib.client.cros.video import helper_logger
 from autotest_lib.client.cros.multimedia import local_facade_factory
 
 
@@ -31,7 +32,7 @@
     """
     version = 2
 
-
+    @helper_logger.video_log_wrapper
     def run_once(self, source_path, codec, resolution, host, args,
                  collect_only = False):
 
@@ -42,6 +43,7 @@
         file_utils.make_leaf_dir(constants.TEST_DIR)
 
         with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
                 extension_paths = [cros_constants.MULTIMEDIA_TEST_EXTENSION],
                 autotest_ext=True,
                 init_network_controller=True) as cr:
diff --git a/client/site_tests/video_HangoutHardwarePerf/video_HangoutHardwarePerf.py b/client/site_tests/video_HangoutHardwarePerf/video_HangoutHardwarePerf.py
index 011e416..d7d9d7e 100644
--- a/client/site_tests/video_HangoutHardwarePerf/video_HangoutHardwarePerf.py
+++ b/client/site_tests/video_HangoutHardwarePerf/video_HangoutHardwarePerf.py
@@ -11,6 +11,7 @@
 from autotest_lib.client.cros import power_status, power_utils
 from autotest_lib.client.cros import service_stopper
 from autotest_lib.client.cros.audio import cmd_utils
+from autotest_lib.client.cros.video import helper_logger
 
 # The download base for test assets.
 DOWNLOAD_BASE = ('http://commondatastorage.googleapis.com'
@@ -209,7 +210,9 @@
             '--test_video_data=%s' % ';'.join(test_video_data),
             '--rendering_warm_up=%d' % RENDERING_WARM_UP,
             '--rendering_fps=%f' % RENDERING_FPS,
-            '--num_play_throughs=%d' % MAX_INT]
+            '--num_play_throughs=%d' % MAX_INT,
+            helper_logger.chrome_vmodule_flag(),
+        ]
         cmd_line.append('--ozone-platform=gbm')
         return cmd_line
 
@@ -231,7 +234,9 @@
             '--gtest_filter=SimpleEncode/*/0',
             '--test_stream_data=%s' % ';'.join(test_stream_data),
             '--run_at_fps',
-            '--num_frames_to_encode=%d' % MAX_INT]
+            '--num_frames_to_encode=%d' % MAX_INT,
+            helper_logger.chrome_vmodule_flag(),
+        ]
         cmd_line.append('--ozone-platform=gbm')
         return cmd_line
 
@@ -260,6 +265,7 @@
         finally:
             cmd_utils.kill_or_log_returncode(*popens)
 
+    @helper_logger.video_log_wrapper
     @chrome_binary_test.nuke_chrome
     def run_once(self, resources, decode_videos, encode_videos, measurement):
         self._downloads = DownloadManager(tmpdir = self.tmpdir)
diff --git a/client/site_tests/video_JpegDecodeAccelerator/video_JpegDecodeAccelerator.py b/client/site_tests/video_JpegDecodeAccelerator/video_JpegDecodeAccelerator.py
index acf8055..20e6bce 100644
--- a/client/site_tests/video_JpegDecodeAccelerator/video_JpegDecodeAccelerator.py
+++ b/client/site_tests/video_JpegDecodeAccelerator/video_JpegDecodeAccelerator.py
@@ -6,6 +6,7 @@
 
 import logging
 from autotest_lib.client.cros import chrome_binary_test
+from autotest_lib.client.cros.video import helper_logger
 
 class video_JpegDecodeAccelerator(chrome_binary_test.ChromeBinaryTest):
     """
@@ -22,6 +23,7 @@
     binary = 'jpeg_decode_accelerator_unittest'
 
 
+    @helper_logger.video_log_wrapper
     @chrome_binary_test.nuke_chrome
     def run_once(self, gtest_filter=None):
         """
@@ -32,7 +34,7 @@
         @raises: error.TestFail for jpeg_decode_accelerator_unittest failures.
         """
         logging.debug('Starting video_JpegDecodeAccelerator')
-        cmd_line_list = []
+        cmd_line_list = [helper_logger.chrome_vmodule_flag()]
         if gtest_filter:
             cmd_line_list.append('--gtest_filter="%s"' % gtest_filter)
 
diff --git a/client/site_tests/video_MultiplePlayback/video_MultiplePlayback.py b/client/site_tests/video_MultiplePlayback/video_MultiplePlayback.py
index 903c557..952ea2f 100755
--- a/client/site_tests/video_MultiplePlayback/video_MultiplePlayback.py
+++ b/client/site_tests/video_MultiplePlayback/video_MultiplePlayback.py
@@ -9,6 +9,7 @@
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
 from autotest_lib.client.cros.video import youtube_helper
+from autotest_lib.client.cros.video import helper_logger
 
 
 FLASH_PROCESS_NAME = 'chrome/chrome --type=ppapi'
@@ -77,11 +78,14 @@
         yh.verify_video_playback()
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self):
         # TODO(scottz): Remove this when crbug.com/220147 is fixed.
         dut_board = utils.get_current_board()
         if dut_board == 'x86-mario':
            raise error.TestNAError('This test is not available on %s' %
                                     dut_board)
-        with chrome.Chrome(init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                init_network_controller=True) as cr:
             self.run_video_tests(cr.browser)
diff --git a/client/site_tests/video_PlaybackPerf/video_PlaybackPerf.py b/client/site_tests/video_PlaybackPerf/video_PlaybackPerf.py
index 1743ddb..71d3288 100644
--- a/client/site_tests/video_PlaybackPerf/video_PlaybackPerf.py
+++ b/client/site_tests/video_PlaybackPerf/video_PlaybackPerf.py
@@ -14,6 +14,7 @@
 from autotest_lib.client.cros import service_stopper
 from autotest_lib.client.cros.video import histogram_verifier
 from autotest_lib.client.cros.video import constants
+from autotest_lib.client.cros.video import helper_logger
 
 
 DISABLE_ACCELERATED_VIDEO_DECODE_BROWSER_ARGS = [
@@ -78,6 +79,7 @@
                                "loop=true")
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self, video_name, video_description, power_test=False,
                  arc_mode=None):
         """
@@ -233,8 +235,10 @@
         """
         keyvals = {}
 
-        with chrome.Chrome(arc_mode=self.arc_mode,
-                           init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                arc_mode=self.arc_mode,
+                init_network_controller=True) as cr:
             # Open the video playback page and start playing.
             self.start_playback(cr, local_path)
             result = gather_result(cr)
diff --git a/client/site_tests/video_VDAPerf/video_VDAPerf.py b/client/site_tests/video_VDAPerf/video_VDAPerf.py
index 25320e5..3601b7c 100644
--- a/client/site_tests/video_VDAPerf/video_VDAPerf.py
+++ b/client/site_tests/video_VDAPerf/video_VDAPerf.py
@@ -12,6 +12,7 @@
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib import file_utils
 from autotest_lib.client.cros import chrome_binary_test
+from autotest_lib.client.cros.video import helper_logger
 
 from contextlib import closing
 from math import ceil, floor
@@ -230,14 +231,15 @@
 
         # Get frame delivery time, decode as fast as possible.
         test_log_file = self._results_file(name, 'no_rendering', OUTPUT_LOG)
-        cmd_line = (
-            '--test_video_data="%s" ' % test_video_data +
-            '--gtest_filter=DecodeVariations/*/0 ' +
-            '--disable_rendering ' +
-            '--output_log="%s" ' % test_log_file +
-            '--ozone-platform=gbm'
-        )
-
+        cmd_line_list = [
+            '--test_video_data="%s"' % test_video_data,
+            '--gtest_filter=DecodeVariations/*/0',
+            '--disable_rendering',
+            '--output_log="%s"' % test_log_file,
+            '--ozone-platform=gbm',
+            helper_logger.chrome_vmodule_flag(),
+        ]
+        cmd_line = ' '.join(cmd_line_list)
         self.run_chrome_test_binary(BINARY, cmd_line)
 
         frame_delivery_times = self._load_frame_delivery_times(test_log_file)
@@ -250,14 +252,16 @@
         # Get frame drop rate & CPU usage, decode at the specified fps
         test_log_file = self._results_file(name, 'with_rendering', OUTPUT_LOG)
         time_log_file = self._results_file(name, 'with_rendering', TIME_LOG)
-        cmd_line = (
-            '--test_video_data="%s" ' % test_video_data +
-            '--gtest_filter=DecodeVariations/*/0 ' +
-            '--rendering_warm_up=%d ' % RENDERING_WARM_UP_ITERS +
-            '--rendering_fps=%s ' % rendering_fps +
-            '--output_log="%s" ' % test_log_file +
-            '--ozone-platform=gbm'
-        )
+        cmd_line_list = [
+            '--test_video_data="%s"' % test_video_data,
+            '--gtest_filter=DecodeVariations/*/0',
+            '--rendering_warm_up=%d' % RENDERING_WARM_UP_ITERS,
+            '--rendering_fps=%s' % rendering_fps,
+            '--output_log="%s"' % test_log_file,
+            '--ozone-platform=gbm',
+            helper_logger.chrome_vmodule_flag(),
+        ]
+        cmd_line = ' '.jon(cmd_line_list)
         time_cmd = ('%s -f "%s" -o "%s" ' %
                     (TIME_BINARY, TIME_OUTPUT_FORMAT, time_log_file))
         self.run_chrome_test_binary(BINARY, cmd_line, prefix=time_cmd)
@@ -268,12 +272,14 @@
 
         # Get decode time median.
         test_log_file = self._results_file(name, 'decode_time', OUTPUT_LOG)
-        cmd_line = (
-            '--test_video_data="%s" ' % test_video_data +
-            '--gtest_filter=*TestDecodeTimeMedian ' +
-            '--output_log="%s" ' % test_log_file +
-            '--ozone-platform=gbm'
-        )
+        cmd_line_list = [
+            '--test_video_data="%s"' % test_video_data,
+            '--gtest_filter=*TestDecodeTimeMedian',
+            '--output_log="%s"' % test_log_file,
+            '--ozone-platform=gbm',
+            helper_logger.chrome_vmodule_flag(),
+        ]
+        cmd_line = ' '.join(cmd_line_list)
         self.run_chrome_test_binary(BINARY, cmd_line)
         line = open(test_log_file, 'r').read()
         m = RE_DECODE_TIME_MEDIAN.match(line)
@@ -281,7 +287,7 @@
         decode_time = int(m.group(1))
         self._logperf(name, KEY_DECODE_TIME_50, decode_time, UNIT_MICROSECOND)
 
-
+    @helper_logger.video_log_wrapper
     @chrome_binary_test.nuke_chrome
     def run_once(self, test_cases):
         self._perf_keyvals = {}
diff --git a/client/site_tests/video_VDASanity/video_VDASanity.py b/client/site_tests/video_VDASanity/video_VDASanity.py
index a1112f0..b875469 100644
--- a/client/site_tests/video_VDASanity/video_VDASanity.py
+++ b/client/site_tests/video_VDASanity/video_VDASanity.py
@@ -8,6 +8,7 @@
 from autotest_lib.client.bin import utils
 from autotest_lib.client.common_lib import file_utils
 from autotest_lib.client.cros import chrome_binary_test
+from autotest_lib.client.cros.video import helper_logger
 
 
 DOWNLOAD_BASE = ('http://commondatastorage.googleapis.com'
@@ -21,6 +22,7 @@
     """
     version = 1
 
+    @helper_logger.video_log_wrapper
     @chrome_binary_test.nuke_chrome
     def run_once(self, test_cases):
         for (path, width, height, frame_num, frag_num, profile) in test_cases:
@@ -42,8 +44,9 @@
         cmd_line_list = [
             '--test_video_data="%s"' % test_video_data,
             '--gtest_filter=VideoDecodeAcceleratorTest.NoCrash',
-            '--ozone-platform=gbm'
-            ]
+            helper_logger.chrome_vmodule_flag(),
+            '--ozone-platform=gbm',
+        ]
         cmd_line = ' '.join(cmd_line_list)
         self.run_chrome_test_binary(BINARY, cmd_line)
 
@@ -52,4 +55,3 @@
             os.remove(filepath)
         except OSError:
             pass
-
diff --git a/client/site_tests/video_VEAPerf/video_VEAPerf.py b/client/site_tests/video_VEAPerf/video_VEAPerf.py
index c05d56e..e746070 100644
--- a/client/site_tests/video_VEAPerf/video_VEAPerf.py
+++ b/client/site_tests/video_VEAPerf/video_VEAPerf.py
@@ -16,6 +16,7 @@
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib import file_utils
 from autotest_lib.client.cros import chrome_binary_test
+from autotest_lib.client.cros.video import helper_logger
 
 
 DOWNLOAD_BASE = ('http://commondatastorage.googleapis.com'
@@ -201,6 +202,7 @@
             '--gtest_filter=EncoderPerf/*/0',
             '--test_stream_data=%s' % test_stream_data,
             '--output_log="%s"' % test_log_file,
+            helper_logger.chrome_vmodule_flag(),
             '--ozone-platform=gbm']
         self.run_chrome_test_binary(VEA_BINARY, ' '.join(vea_args))
         self._analyze_fps(test_name, test_log_file)
@@ -215,6 +217,7 @@
             '--test_stream_data=%s' % test_stream_data,
             '--run_at_fps', '--measure_latency',
             '--output_log="%s"' % test_log_file,
+            helper_logger.chrome_vmodule_flag(),
             '--ozone-platform=gbm']
         time_cmd = ('%s -f "%s" -o "%s" ' %
                     (TIME_BINARY, TIME_OUTPUT_FORMAT, time_log_file))
@@ -223,7 +226,7 @@
         self._analyze_encode_latency(test_name, test_log_file)
         self._analyze_cpu_usage(test_name, time_log_file)
 
-
+    @helper_logger.video_log_wrapper
     @chrome_binary_test.nuke_chrome
     def run_once(self, test_cases):
         last_error = None
@@ -253,4 +256,3 @@
 
         if last_error:
             raise last_error
-
diff --git a/client/site_tests/video_VideoCorruption/video_VideoCorruption.py b/client/site_tests/video_VideoCorruption/video_VideoCorruption.py
index b1af0ac..9b66589 100755
--- a/client/site_tests/video_VideoCorruption/video_VideoCorruption.py
+++ b/client/site_tests/video_VideoCorruption/video_VideoCorruption.py
@@ -9,18 +9,22 @@
 from autotest_lib.client.common_lib.cros import chrome
 from autotest_lib.client.cros.video import constants
 from autotest_lib.client.cros.video import native_html5_player
+from autotest_lib.client.cros.video import helper_logger
 
 
 class video_VideoCorruption(test.test):
     """This test verifies playing corrupted video in Chrome."""
     version = 1
 
+    @helper_logger.video_log_wrapper
     def run_once(self, video):
         """Tests whether Chrome handles corrupted videos gracefully.
 
         @param video: Sample corrupted video file to be played in Chrome.
         """
-        with chrome.Chrome(init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                init_network_controller=True) as cr:
             shutil.copy2(constants.VIDEO_HTML_FILEPATH, self.bindir)
             cr.browser.platform.SetHTTPServerDirectories(self.bindir)
             tab = cr.browser.tabs[0]
diff --git a/client/site_tests/video_VideoDecodeAccelerator/video_VideoDecodeAccelerator.py b/client/site_tests/video_VideoDecodeAccelerator/video_VideoDecodeAccelerator.py
index b98548c..543ce15 100644
--- a/client/site_tests/video_VideoDecodeAccelerator/video_VideoDecodeAccelerator.py
+++ b/client/site_tests/video_VideoDecodeAccelerator/video_VideoDecodeAccelerator.py
@@ -7,6 +7,7 @@
 from autotest_lib.client.bin import utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.cros import chrome_binary_test
+from autotest_lib.client.cros.video import helper_logger
 
 class video_VideoDecodeAccelerator(chrome_binary_test.ChromeBinaryTest):
     """
@@ -17,7 +18,7 @@
     version = 1
     binary = 'video_decode_accelerator_unittest'
 
-
+    @helper_logger.video_log_wrapper
     @chrome_binary_test.nuke_chrome
     def run_once(self, videos, use_cr_source_dir=True, gtest_filter=None):
         """
@@ -45,6 +46,7 @@
             # along with test logs.
             cmd_line_list.append(
                 '--thumbnail_output_dir="%s"' % self.resultsdir)
+            cmd_line_list.append(helper_logger.chrome_vmodule_flag())
             cmd_line_list.append('--ozone-platform=gbm')
 
             if gtest_filter:
diff --git a/client/site_tests/video_VideoDecodeMemoryUsage/video_VideoDecodeMemoryUsage.py b/client/site_tests/video_VideoDecodeMemoryUsage/video_VideoDecodeMemoryUsage.py
index 9124bc0..de9397f 100644
--- a/client/site_tests/video_VideoDecodeMemoryUsage/video_VideoDecodeMemoryUsage.py
+++ b/client/site_tests/video_VideoDecodeMemoryUsage/video_VideoDecodeMemoryUsage.py
@@ -13,6 +13,7 @@
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
 from autotest_lib.client.cros.graphics import graphics_utils
+from autotest_lib.client.cros.video import helper_logger
 
 TEST_PAGE = 'content.html'
 
@@ -359,11 +360,14 @@
     """This is a memory usage test for video playback."""
     version = 1
 
+    @helper_logger.video_log_wrapper
     def run_once(self, testcases):
         last_error = None
         logging.getLogger().addFilter(TelemetryFilter())
 
-        with chrome.Chrome(init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                init_network_controller=True) as cr:
             cr.browser.platform.SetHTTPServerDirectories(self.bindir)
             for class_name, videos in testcases:
                 name = _get_testcase_name(class_name, videos)
diff --git a/client/site_tests/video_VideoEncodeAccelerator/video_VideoEncodeAccelerator.py b/client/site_tests/video_VideoEncodeAccelerator/video_VideoEncodeAccelerator.py
index 805c8c6..1662b71 100644
--- a/client/site_tests/video_VideoEncodeAccelerator/video_VideoEncodeAccelerator.py
+++ b/client/site_tests/video_VideoEncodeAccelerator/video_VideoEncodeAccelerator.py
@@ -12,6 +12,7 @@
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib import file_utils
 from autotest_lib.client.cros import chrome_binary_test
+from autotest_lib.client.cros.video import helper_logger
 
 DOWNLOAD_BASE = 'http://commondatastorage.googleapis.com/chromiumos-test-assets-public/'
 BINARY = 'video_encode_accelerator_unittest'
@@ -87,6 +88,7 @@
 
         return ''
 
+    @helper_logger.video_log_wrapper
     @chrome_binary_test.nuke_chrome
     def run_once(self, in_cloud, streams, profile, gtest_filter=None):
         """Runs video_encode_accelerator_unittest on the streams.
@@ -113,6 +115,7 @@
             cmd_line_list = []
             cmd_line_list.append('--test_stream_data="%s:%s:%s:%s:%s:%s"' % (
                     input_path, width, height, profile, output_path, bit_rate))
+            cmd_line_list.append(helper_logger.chrome_vmodule_flag())
             cmd_line_list.append('--ozone-platform=gbm')
 
             # Command line |gtest_filter| can override get_filter_option().
diff --git a/client/site_tests/video_VideoReload/video_VideoReload.py b/client/site_tests/video_VideoReload/video_VideoReload.py
index 4b0e3cc..9981fe0 100755
--- a/client/site_tests/video_VideoReload/video_VideoReload.py
+++ b/client/site_tests/video_VideoReload/video_VideoReload.py
@@ -9,6 +9,7 @@
 from autotest_lib.client.common_lib.cros import chrome
 from autotest_lib.client.cros.video import constants
 from autotest_lib.client.cros.video import native_html5_player
+from autotest_lib.client.cros.video import helper_logger
 
 WAIT_TIMEOUT_S = 30
 
@@ -16,12 +17,15 @@
     """This test verifies reloading video works in Chrome."""
     version = 1
 
+    @helper_logger.video_log_wrapper
     def run_once(self, video_file):
         """Tests whether Chrome reloads video after reloading the tab.
 
         @param video_file: fullpath to video to play.
         """
-        with chrome.Chrome(init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                init_network_controller=True) as cr:
             shutil.copy2(constants.VIDEO_HTML_FILEPATH, self.bindir)
             cr.browser.platform.SetHTTPServerDirectories(self.bindir)
             tab = cr.browser.tabs[0]
diff --git a/client/site_tests/video_VideoSanity/video_VideoSanity.py b/client/site_tests/video_VideoSanity/video_VideoSanity.py
index eeeb57d..885de9f 100755
--- a/client/site_tests/video_VideoSanity/video_VideoSanity.py
+++ b/client/site_tests/video_VideoSanity/video_VideoSanity.py
@@ -10,6 +10,7 @@
 from autotest_lib.client.common_lib.cros import chrome, arc_common
 from autotest_lib.client.cros.video import constants
 from autotest_lib.client.cros.video import native_html5_player
+from autotest_lib.client.cros.video import helper_logger
 
 class video_VideoSanity(test.test):
     """This test verify the media elements and video sanity.
@@ -21,6 +22,7 @@
     version = 2
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self, video_file, arc_mode=False):
         """
         Tests whether the requested video is playable
@@ -49,8 +51,10 @@
             arc_mode_str = arc_common.ARC_MODE_ENABLED
         else:
             arc_mode_str = arc_common.ARC_MODE_DISABLED
-        with chrome.Chrome(arc_mode=arc_mode_str,
-                           init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                arc_mode=arc_mode_str,
+                init_network_controller=True) as cr:
              shutil.copy2(constants.VIDEO_HTML_FILEPATH, self.bindir)
              video_path = os.path.join(constants.CROS_VIDEO_DIR,
                                        'files', video_file)
diff --git a/client/site_tests/video_VideoSeek/video_VideoSeek.py b/client/site_tests/video_VideoSeek/video_VideoSeek.py
index 1344c2a..1470304 100755
--- a/client/site_tests/video_VideoSeek/video_VideoSeek.py
+++ b/client/site_tests/video_VideoSeek/video_VideoSeek.py
@@ -9,6 +9,7 @@
 from autotest_lib.client.bin import test, utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
+from autotest_lib.client.cros.video import helper_logger
 
 WAIT_TIMEOUT_S = 180
 
@@ -42,6 +43,8 @@
 
         return False
 
+
+    @helper_logger.video_log_wrapper
     def run_once(self, codec, is_switchres, video):
         """Tests whether video seek works by random seeks forward and backward.
 
@@ -52,7 +55,9 @@
         if self.is_skipping_test(codec, is_switchres):
             raise error.TestNAError('Skipping test run on this board.')
 
-        with chrome.Chrome(init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                init_network_controller=True) as cr:
             cr.browser.platform.SetHTTPServerDirectories(self.bindir)
             tab = cr.browser.tabs[0]
             tab.Navigate(cr.browser.platform.http_server.UrlOf(
diff --git a/client/site_tests/video_VimeoVideo/video_VimeoVideo.py b/client/site_tests/video_VimeoVideo/video_VimeoVideo.py
index 3928221..bab3669 100755
--- a/client/site_tests/video_VimeoVideo/video_VimeoVideo.py
+++ b/client/site_tests/video_VimeoVideo/video_VimeoVideo.py
@@ -10,6 +10,7 @@
 from autotest_lib.client.bin import test, utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
+from autotest_lib.client.cros.video import helper_logger
 
 
 class video_VimeoVideo(test.test):
@@ -107,7 +108,10 @@
             playback = playback + 1
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self):
-        with chrome.Chrome(init_network_controller=True) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                init_network_controller=True) as cr:
             cr.browser.platform.SetHTTPServerDirectories(self.bindir)
             self.run_vimeo_tests(cr.browser)
diff --git a/client/site_tests/video_WebRtcCamera/video_WebRtcCamera.py b/client/site_tests/video_WebRtcCamera/video_WebRtcCamera.py
index be1b2e5..ae3967f 100644
--- a/client/site_tests/video_WebRtcCamera/video_WebRtcCamera.py
+++ b/client/site_tests/video_WebRtcCamera/video_WebRtcCamera.py
@@ -10,6 +10,7 @@
 from autotest_lib.client.bin import utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
+from autotest_lib.client.cros.video import helper_logger
 
 EXTRA_BROWSER_ARGS = ['--use-fake-ui-for-media-stream']
 
@@ -77,10 +78,12 @@
             desc=('getusermedia.html:reportTestDone did not run. Test did not '
                   'complete successfully.'))
 
+    @helper_logger.video_log_wrapper
     def run_once(self):
         """Runs the test."""
         self.board = utils.get_current_board()
-        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS,
+        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS +\
+                           [helper_logger.chrome_vmodule_flag()],
                            init_network_controller=True) as cr:
             self.start_getusermedia(cr)
             self.print_perf_results()
diff --git a/client/site_tests/video_WebRtcMediaRecorder/video_WebRtcMediaRecorder.py b/client/site_tests/video_WebRtcMediaRecorder/video_WebRtcMediaRecorder.py
index 6ce536d..b011e07 100644
--- a/client/site_tests/video_WebRtcMediaRecorder/video_WebRtcMediaRecorder.py
+++ b/client/site_tests/video_WebRtcMediaRecorder/video_WebRtcMediaRecorder.py
@@ -9,6 +9,7 @@
 from autotest_lib.client.bin import utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
+from autotest_lib.client.cros.video import helper_logger
 
 EXTRA_BROWSER_ARGS = ['--use-fake-ui-for-media-stream',
                       '--use-fake-device-for-media-stream',
@@ -31,7 +32,8 @@
 
         @param test_name: Name of test to run.
         """
-        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS,
+        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS +\
+                           [helper_logger.chrome_vmodule_flag()],
                            init_network_controller=True) as cr:
             cr.browser.platform.SetHTTPServerDirectories(self.bindir)
             self.tab = cr.browser.tabs[0]
@@ -76,6 +78,7 @@
             return True
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self):
         """Runs the video_WebRtcMediaRecorder test."""
         self.launch_recorder_test('testStartAndRecorderState')
@@ -100,4 +103,3 @@
         self.launch_recorder_test('testAddingTrackToMediaStreamFiresErrorEvent')
         self.launch_recorder_test(
                 'testRemovingTrackFromMediaStreamFiresErrorEvent')
-
diff --git a/client/site_tests/video_WebRtcPeerConnectionWithCamera/video_WebRtcPeerConnectionWithCamera.py b/client/site_tests/video_WebRtcPeerConnectionWithCamera/video_WebRtcPeerConnectionWithCamera.py
index d7cb903..fcdf50e 100644
--- a/client/site_tests/video_WebRtcPeerConnectionWithCamera/video_WebRtcPeerConnectionWithCamera.py
+++ b/client/site_tests/video_WebRtcPeerConnectionWithCamera/video_WebRtcPeerConnectionWithCamera.py
@@ -9,6 +9,7 @@
 from autotest_lib.client.bin import utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
+from autotest_lib.client.cros.video import helper_logger
 
 EXTRA_BROWSER_ARGS = ['--use-fake-ui-for-media-stream']
 
@@ -51,12 +52,14 @@
             _test_done, timeout=timeout_secs, sleep_interval=1,
             desc='loopback.html reports itself as finished')
 
+    @helper_logger.video_log_wrapper
     def run_once(self, video_codec):
         """Runs the video_WebRtcPeerConnectionWithCamera test.
 
         @param video_codec: video codec to use.
         """
-        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS,
+        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS +\
+                           [helper_logger.chrome_vmodule_flag()],
                            init_network_controller=True) as cr:
             self.start_loopback(cr, video_codec)
             self.wait_test_completed(TIMEOUT)
diff --git a/client/site_tests/video_WebRtcPerf/video_WebRtcPerf.py b/client/site_tests/video_WebRtcPerf/video_WebRtcPerf.py
index 23e61da..4d66999 100644
--- a/client/site_tests/video_WebRtcPerf/video_WebRtcPerf.py
+++ b/client/site_tests/video_WebRtcPerf/video_WebRtcPerf.py
@@ -14,6 +14,7 @@
 from autotest_lib.client.cros import service_stopper
 from autotest_lib.client.cros.video import histogram_verifier
 from autotest_lib.client.cros.video import constants
+from autotest_lib.client.cros.video import helper_logger
 
 
 EXTRA_BROWSER_ARGS = ['--use-fake-device-for-media-stream',
@@ -125,6 +126,7 @@
         return tab
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self, decode_time_test=False, cpu_test=False,
                  power_test=False, arc_mode=None):
         """
@@ -178,7 +180,8 @@
         keyvals = {}
         EXTRA_BROWSER_ARGS.append(FAKE_FILE_ARG % local_path)
 
-        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS,
+        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS +\
+                           [helper_logger.chrome_vmodule_flag()],
                            arc_mode=self.arc_mode,
                            init_network_controller=True) as cr:
             # On daisy, Chrome freezes about 30 seconds after login because of
diff --git a/client/site_tests/video_WebRtcSanity/video_WebRtcSanity.py b/client/site_tests/video_WebRtcSanity/video_WebRtcSanity.py
index e607d77..24f53b0 100644
--- a/client/site_tests/video_WebRtcSanity/video_WebRtcSanity.py
+++ b/client/site_tests/video_WebRtcSanity/video_WebRtcSanity.py
@@ -9,6 +9,7 @@
 from autotest_lib.client.bin import utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
+from autotest_lib.client.cros.video import helper_logger
 
 EXTRA_BROWSER_ARGS = ['--use-fake-ui-for-media-stream',
                       '--use-fake-device-for-media-stream']
@@ -50,9 +51,11 @@
             _test_done, timeout=timeout_secs, sleep_interval=1,
             desc = 'getusermedia.html reports itself as finished')
 
+    @helper_logger.video_log_wrapper
     def run_once(self):
         """Runs the test."""
-        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS,
+        with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS +\
+                           [helper_logger.chrome_vmodule_flag()],
                            init_network_controller=True) as cr:
             self.start_getusermedia(cr)
             self.wait_test_completed(SHORT_TIMEOUT_IN_SECS)
diff --git a/client/site_tests/video_YouTubeHTML5/video_YouTubeHTML5.py b/client/site_tests/video_YouTubeHTML5/video_YouTubeHTML5.py
index e08b5c6..216f175 100755
--- a/client/site_tests/video_YouTubeHTML5/video_YouTubeHTML5.py
+++ b/client/site_tests/video_YouTubeHTML5/video_YouTubeHTML5.py
@@ -8,6 +8,7 @@
 from autotest_lib.client.common_lib.cros import chrome
 from autotest_lib.client.cros import httpd
 from autotest_lib.client.cros.video import youtube_helper
+from autotest_lib.client.cros.video import helper_logger
 
 
 FLASH_PROCESS_NAME = 'chrome/chrome --type=ppapi'
@@ -64,6 +65,8 @@
         yh.verify_player_states()
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self):
-        with chrome.Chrome() as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag()) as cr:
             self.run_youtube_tests(cr.browser)
diff --git a/client/site_tests/video_YouTubeMseEme/video_YouTubeMseEme.py b/client/site_tests/video_YouTubeMseEme/video_YouTubeMseEme.py
index b8a0a78..e3e2294 100644
--- a/client/site_tests/video_YouTubeMseEme/video_YouTubeMseEme.py
+++ b/client/site_tests/video_YouTubeMseEme/video_YouTubeMseEme.py
@@ -8,6 +8,7 @@
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
 from autotest_lib.client.cros import httpd
+from autotest_lib.client.cros.video import helper_logger
 
 
 class video_YouTubeMseEme(test.test):
@@ -277,8 +278,10 @@
                 msg='test_can_play_widevine failed.')
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self, subtest_name):
-        with chrome.Chrome() as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag()) as cr:
             self.init(cr, self.PLAYER_PAGE)
 
             try:
diff --git a/client/site_tests/video_YouTubePage/video_YouTubePage.py b/client/site_tests/video_YouTubePage/video_YouTubePage.py
index e720e13..ef8d499 100644
--- a/client/site_tests/video_YouTubePage/video_YouTubePage.py
+++ b/client/site_tests/video_YouTubePage/video_YouTubePage.py
@@ -10,6 +10,7 @@
 from autotest_lib.client.bin import test
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib.cros import chrome
+from autotest_lib.client.cros.video import helper_logger
 
 
 class video_YouTubePage(test.test):
@@ -310,6 +311,7 @@
         self.verify_last_second_playback()
 
 
+    @helper_logger.video_log_wrapper
     def run_once(self, subtest_name):
         """Main runner for the test.
 
@@ -326,7 +328,9 @@
             extension_paths.append(extension_path)
 
 
-        with chrome.Chrome(extension_paths=extension_paths) as cr:
+        with chrome.Chrome(
+                extra_browser_args=helper_logger.chrome_vmodule_flag(),
+                extension_paths=extension_paths) as cr:
             self.initialize_test(cr, self.TEST_PAGE)
 
             if subtest_name is 'playing':
