From 13c294395965d4aae94bb9abd63cc5a72cd0f0f4 Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Wed, 27 Apr 2016 14:21:38 +0100 Subject: [PATCH] Add timestamps to log. Log channel traffic. --- .gitignore | 2 +- autoload/gitgutter/debug.vim | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e02d3ff..82fb253 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ /doc/tags /misc /test/*.actual -gitgutter.log +*.log diff --git a/autoload/gitgutter/debug.vim b/autoload/gitgutter/debug.vim index cd16018..20a899a 100644 --- a/autoload/gitgutter/debug.vim +++ b/autoload/gitgutter/debug.vim @@ -1,4 +1,8 @@ -let s:log_file = expand(':p:h:h:h').'/'.'gitgutter.log' +let s:plugin_dir = expand(':p:h:h:h').'/' +let s:log_file = s:plugin_dir.'gitgutter.log' +let s:channel_log = s:plugin_dir.'channel.log' +let s:new_log_session = 1 + function! gitgutter#debug#debug() " Open a scratch buffer @@ -75,16 +79,39 @@ endfunction " assumes optional args are calling function's optional args function! gitgutter#debug#log(message, ...) if g:gitgutter_log + if s:new_log_session && gitgutter#async#available() + call ch_logfile(s:channel_log, 'w') + endif + execute 'redir >> '.s:log_file + if s:new_log_session + let s:start = reltime() + silent echo "\n==== start log session ====" + endif + + let elapsed = reltimestr(reltime(s:start)).' ' + silent echo '' " callers excluding this function - silent echo "\n".expand('')[:-22].':' - silent echo type(a:message) == 1 ? join(split(a:message, '\n'),"\n") : a:message + silent echo elapsed.expand('')[:-22].':' + silent echo elapsed.s:format_for_log(a:message) if a:0 && !empty(a:1) for msg in a:000 - silent echo type(msg) == 1 ? join(split(msg, '\n'),"\n") : msg + silent echo elapsed.s:format_for_log(msg) endfor endif redir END + + let s:new_log_session = 0 + endif +endfunction + +function! s:format_for_log(data) + if type(a:data) == 1 + return join(split(a:data,'\n'),"\n") + elseif type(a:data) == 3 + return '['.join(a:data,"\n").']' + else + return a:data endif endfunction