Torch 日志文件的保存 logroll
Torch 日志文件的保存 logroll
怎样将 Torch 在终端显示的信息,保存到 log 文件中 ?
现在介绍一种方法:利用 logroll 的方式。
参考 https://github.com/rosejn/logroll
1. 首先安装 logroll 工具包:
luarocks install logroll
2. 在代码头部:require "logroll" 加载该工具包:

调用的代码如下:
require 'paths'
require 'os'
require 'io'
require 'string' require 'fn'
require 'pprint' logroll = {} local DEFAULT_LEVEL = 'INFO'
local LOG_LEVELS = {'DEBUG', 'INFO', 'WARN', 'ERROR'} for i, label in ipairs(LOG_LEVELS) do
logroll[label] = i
end
logroll.levels = LOG_LEVELS local function default_formatter(level, ...)
local msg = nil if #{...} > then
msg = string.format(({...})[], unpack(fn.rest({...})))
else
msg = pprint.pretty_string(({...})[])
end return string.format("[%s - %s] - %s\n", LOG_LEVELS[level], os.date("%Y_%m_%d_%X"), msg)
end local function default_writer(logger, level, ...)
if level >= logger.level then
logger.file:write(logger.formatter(level, unpack({...})))
end
end local function make_logger(file, options)
local logger = {options = options,
file = file,
formatter = options.formatter or default_formatter,
writer = options.writer or default_writer,
level = logroll[DEFAULT_LEVEL]
} return fn.reduce(function(lg, level)
lg[string.lower(level)] = fn.partial(logger.writer, logger, logroll[level])
return lg
end,
logger, LOG_LEVELS)
end -- A simple logger to print to STDIO.
function logroll.print_logger(options)
local options = options or {}
return make_logger(io.stdout, options)
end -- A logger that prints to a file.
function logroll.file_logger(path, options)
local options = options or {} if options.file_timestamp then
-- append timestamp to create unique log file
path = path .. '-'..os.date("%Y_%m_%d_%X")
end os.execute('mkdir -p "' .. paths.dirname(path) .. '"') return make_logger(io.open(path, 'w'), options)
end -- A logger that combines several other loggers
function logroll.combine(...) local joint = {
subloggers = {...}
} for _,level in ipairs(LOG_LEVELS) do
local fname = string.lower(level)
joint[fname] = function(...)
for _,lg in ipairs(joint.subloggers) do
lg[fname](...)
end
end
end return joint
end
另外,也可以参考这个代码中,保存 log 文件的方式:
https://github.com/szagoruyko/cifar.torch/blob/master/train.lua#L7
1 if testLogger then
2 paths.mkdir(opt.save)
3 testLogger:add{train_acc, confusion.totalValid * 100}
4 testLogger:style{'-','-'}
5 testLogger:plot()
6
7 if paths.filep(opt.save..'/test.log.eps') then
8 local base64im
9 do
10 os.execute(('convert -density 200 %s/test.log.eps %s/test.png'):format(opt.save,opt.save))
11 os.execute(('openssl base64 -in %s/test.png -out %s/test.base64'):format(opt.save,opt.save))
12 local f = io.open(opt.save..'/test.base64')
13 if f then base64im = f:read'*all' end
14 end
15
16 local file = io.open(opt.save..'/report.html','w')
17 file:write(([[
18 <!DOCTYPE html>
19 <html>
20 <body>
21 <title>%s - %s</title>
22 <img src="data:image/png;base64,%s">
23 <h4>optimState:</h4>
24 <table>
25 ]]):format(opt.save,epoch,base64im))
26 for k,v in pairs(optimState) do
27 if torch.type(v) == 'number' then
28 file:write('<tr><td>'..k..'</td><td>'..v..'</td></tr>\n')
29 end
30 end
31 file:write'</table><pre>\n'
32 file:write(tostring(confusion)..'\n')
33 file:write(tostring(model)..'\n')
34 file:write'</pre></body></html>'
35 file:close()
36 end
37 end
其实,最简单有效粗暴的,应该是这种:
1 -- save the information into log files.
2 local logSavePath = './log_Files/'
3 local file = io.open(logSavePath..'train_record.log','a')
4 file:write(tostring("train error: " .. error)..'\n')
5 file:close()
其中,第 4 行的保存记录,也可以是其他地方的变量以及语句,等等。可以随机应变。
Torch 日志文件的保存 logroll的更多相关文章
- log4j日志文件输出保存
og4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=app.log log4j.appe ...
- Log4Net 日志文件分类保存
1.app.config <configSections> <section name="log4net" type="log4net.Config.L ...
- springboot-用logback将日志文件按等级保存到不同文件
springboot-用logback将日志文件按等级保存到不同文件 案例: 例如项目基本包名为com.xxx,将该包下的所有日志按debug.info.warn.error等级分别保存到D:/log ...
- Nginx如何对日志文件进行配置?
在我们日常工作开发中,对调试bug最重要的手段就是查看日志和断点调试了. 今天我们来说日志文件,Nginx的日志文件一般保存的是访问日志和错误日志. 1. 用来log_format指令设置日志格式 l ...
- ios 将Log日志重定向输出到文件中保存
对于真机,日志没法保存,不好分析问题.所以有必要将日志保存到应用的Docunment目录下,并设置成共享文件,这样才能取出分析. 首先是日志输出,分为c的printf和标准的NSLog输出,print ...
- Tomcat输出保存JVM GC日志文件
当系统出现问题时,分析java虚拟机GC日志可以帮助我们定位问题,一般来说, 我们可以通过制定JVM参数使tomcat保存GC日志文件,具体实现如下: Windows下: 找到tomcat的解压目录, ...
- Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件
Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out ...
- log配置文件log4j.propeties(配置保存日志文件的相对路径)
log配置文件log4j.propeties(配置保存日志文件的相对路径) log4j.propeties文件: #日志的4种级别ERROR(错误).WARN(警告潜在的错误).INFO(粗粒度信息) ...
- 【Azure 事件中心】 org.slf4j.Logger 收集 Event Hub SDK(Java) 输出日志并以文件形式保存
问题描述 在使用Azure Event Hub的SDK时候,常规情况下,发现示例代码中并没有SDK内部的日志输出.因为在Java项目中,没有添加 SLF4J 依赖,已致于在启动时候有如下提示: SLF ...
随机推荐
- 关于 DWZ 弹出框
1.弹出框 <a name="***" class="***" href="${** }/***.do?action=***&属性=${ ...
- spring boot 跨域访问处理
问题场景:由于项目中使用到跨域访问,今天也得到高人指点,所以写出来分享给大家.可能是考虑到前后端分离,前端后端服务器不在一台机器上,出现这种跨域访问的情况.正常情况下本地访问是没有问题,但是遇到这种非 ...
- 开源一个网络图片浏览器HooPhotoBrowser
在公司开发项目中需要弹出展示从网络上下载的图片,并提供滑动展示功能.目前采用同事开发的图片浏览器,后期有时间想优化一下.所以重温了下以前开发的类似微博的项目中的图片浏览器代码,并抽取出来封装成了现在这 ...
- 使用共享网卡的NAT模式配置VMware中的CentOS的上网功能
昨天写了一篇文章总结了前两天折腾VMware 10中的CentOS上网的问题,结果留下一下小瑕疵,就是视频教程中通过共享网卡使用NAT模式配置虚拟机的方法.今天在结合昨天的基础上终于弄明白了这个问题. ...
- mediawiki安装
下载wiki,我用的mediawiki-1.23.6 版本. 服务器是window2008 r2 的. 下载xampp,或者wamp都可以,我的用的禅道安装的xampp,解压后直接放在htdocs目录 ...
- docker push 实现过程
这一篇文章分析一下docker push的过程:docker push是将本地的镜像上传到registry service的过程: 根据前几篇文章,可以知道客户端的命令是在api/client/pus ...
- Android性能测试工具APT使用指南
腾讯的安卓平台高效的性能测试工具APT(Android Performance Testing Tools),适用于开发自测和定位性能瓶颈,帮助测试人员完成性能基准测试.竞品测试. APT提供了CPU ...
- Jsonp理论实例代码详解
什么是Json?JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - ...
- 2048游戏C语言代码
如果程序里面有错误,希望大家能够批评指正! #include<stdio.h> #include<stdlib.h> #include<conio.h> #incl ...
- centos单用户模式修改ROOT密码
首先启动的时候的时候,需要进入单用户模式(进入单用户模式的前提是系统引导器能正常工作),单用户模式是不需要输入密码,并且(进入单用户模式,没有开启网络服务,不支持远程连接 )网上说可以通过GRUB ( ...