Skip to content

Instantly share code, notes, and snippets.

@cparker15
Last active March 10, 2016 21:59
Show Gist options
  • Save cparker15/1cda5f5f898cee42e642 to your computer and use it in GitHub Desktop.
Save cparker15/1cda5f5f898cee42e642 to your computer and use it in GitHub Desktop.
Console Logging in Batch Files
@ECHO OFF
:: =============== BEGIN VARIABLE DECLARATIONS ===============
:: Put variable declarations here...
:: =============== END VARIABLE DECLARATIONS ===============
ECHO/
:: =============== BEGIN BATCH FILE BODY ===============
CALL :CONSOLE_LOG This should have a log level of INFO.
CALL :CONSOLE_INFO This should also have a log level of INFO.
CALL :CONSOLE_WARN This should have a log level of WARN.
CALL :CONSOLE_ERROR This should have a log level of ERROR.
CALL :CONSOLE_LOG ^^^^(This is text in parentheses.^^^^)
IF '..'=='..' (
CALL :CONSOLE_LOG ^^^^^(So is this.^^^^^)
IF '..'=='..' (
CALL :CONSOLE_LOG ^^^^^(So is this.^^^^^)
IF '..'=='..' (
CALL :CONSOLE_LOG ^^^^^(So is this.^^^^^)
IF '..'=='..' (
CALL :CONSOLE_LOG ^^^^^(So is this.^^^^^)
)
)
)
)
:: =============== END BATCH FILE BODY ===============
GOTO :EOF
:: =============== BEGIN FUNCTION DECLARATIONS ===============
:CONSOLE_LOG
:CONSOLE_INFO
SETLOCAL
CALL :ECHO_LOG INFO %*
ENDLOCAL
GOTO :EOF
:CONSOLE_WARN
SETLOCAL
CALL :ECHO_LOG WARN %*
ENDLOCAL
GOTO :EOF
:CONSOLE_ERROR
SETLOCAL
CALL :ECHO_LOG ERROR %*
ENDLOCAL
GOTO :EOF
:ECHO_LOG
SETLOCAL
SET ValidLogLevels=INFO WARN ERROR
FOR %%A IN (%ValidLogLevels%) DO (
IF '.%%A.'=='.%1.' (
SET LogLevel=%%A
)
)
IF '.%LogLevel%.'=='..' (
ECHO/
ECHO USAGE:
ECHO CALL :ECHO_LOG [Log Level] [Log Text]
ECHO/
GOTO :EOF
)
FOR /f "usebackq tokens=1*" %%J IN (`ECHO %*`) DO @ SET LogText=%%K
FOR /F "usebackq tokens=1,2 delims==" %%J IN (`WMIC OS GET LocalDateTime /VALUE 2^>NUL`) DO (
IF '.%%J.'=='.LocalDateTime.' (
SET LocalDateTime=%%K
)
)
SET yyyy=%LocalDateTime:~0,4%
SET MM=%LocalDateTime:~4,2%
SET dd=%LocalDateTime:~6,2%
SET HH=%LocalDateTime:~8,2%
SET mm=%LocalDateTime:~10,2%
SET ss=%LocalDateTime:~12,2%
SET fff=%LocalDateTime:~15,3%
SET timestamp=%yyyy%-%MM%-%dd% %HH%:%mm%:%ss%.%fff%
ECHO [%timestamp% - %LogLevel%] %LogText%
ENDLOCAL
GOTO :EOF
:: =============== END FUNCTION DECLARATIONS ===============
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment