julia程序中打印log日志
2021-08-03 本文已影响0人
昵称违法
正常情况下,我们使用println("ssss","ererereer")函数来打印东西,输出到屏幕上
但是如果需要打印到文件里面,做事后分析的时候,如何操作?把东西println到缓冲区或者文件里面。
感兴趣的同学直接去查官网的log相关内容。【julia官网logging文档:https://docs.julialang.org/en/v1/stdlib/Logging/】
本文为自己画蛇添足,把println函数再次包装,根据参数或者不打印或者打印到指定地方。
一、println_log的定义
"""
println something
====in====
print_type , 0 —— 不打印,1 —— 正常的println,2 —— println to IOBuffer
log_io , IOBuffer , print_type == 2的时候,把内容print到该缓冲区
x... , 要println的内容
====out====
无打印
打印到标准输出
打印到IOBuffer
"""
function println_log(print_type,log_io,x...)
if print_type == 0
#
elseif print_type == 1
println(x...)
elseif print_type == 2
println(log_io,x...)
end
end
1、不打印,一般情况下,程序调试完毕,正式运行的时候,可用参数关闭打印功能
println_log(0,log1,"")
2、标准打印,一般情况下,程序调试过程中,常用功能
println_log(1,log1,"3333333","4545454")
3、打印到缓冲区
log1 = IOBuffer()
println_log(2,log1,"3333333","4545454")
println_log(2,log1,"9999999","0000000")
log1 |> take! |> String |> println #查看结果
4、把打印到缓冲区的内容保存到txt日志文件中
注意take!函数,String(take!(log1)),一旦take!,缓冲区便清空为初始状态
print_type = 2
log1 = IOBuffer()
for i in 1:100
println_log(2,log1,"第$(i)天交易,操作内容为...")
end
log_str = String(take!(log1))
open("data/日志文件.txt", "w") do file
write(file,log_str)
end
log_str = nothing
输出结果:data/日志文件.txt
第1天交易,操作内容为...
第2天交易,操作内容为...
第3天交易,操作内容为...
第4天交易,操作内容为...
第5天交易,操作内容为...
第6天交易,操作内容为...
第7天交易,操作内容为...
第8天交易,操作内容为...
第9天交易,操作内容为...
第10天交易,操作内容为...
第11天交易,操作内容为...
第12天交易,操作内容为...
第13天交易,操作内容为...
第14天交易,操作内容为...
第15天交易,操作内容为...
第16天交易,操作内容为...
第17天交易,操作内容为...
第18天交易,操作内容为...
第19天交易,操作内容为...
第20天交易,操作内容为...
第21天交易,操作内容为...
第22天交易,操作内容为...
第23天交易,操作内容为...
第24天交易,操作内容为...
第25天交易,操作内容为...
第26天交易,操作内容为...
第27天交易,操作内容为...
第28天交易,操作内容为...
第29天交易,操作内容为...
第30天交易,操作内容为...
第31天交易,操作内容为...
第32天交易,操作内容为...
第33天交易,操作内容为...
第34天交易,操作内容为...
第35天交易,操作内容为...
第36天交易,操作内容为...
第37天交易,操作内容为...
第38天交易,操作内容为...
第39天交易,操作内容为...
第40天交易,操作内容为...
第41天交易,操作内容为...
第42天交易,操作内容为...
第43天交易,操作内容为...
第44天交易,操作内容为...
第45天交易,操作内容为...
第46天交易,操作内容为...
第47天交易,操作内容为...
第48天交易,操作内容为...
第49天交易,操作内容为...
第50天交易,操作内容为...
第51天交易,操作内容为...
第52天交易,操作内容为...
第53天交易,操作内容为...
第54天交易,操作内容为...
第55天交易,操作内容为...
第56天交易,操作内容为...
第57天交易,操作内容为...
第58天交易,操作内容为...
第59天交易,操作内容为...
第60天交易,操作内容为...
第61天交易,操作内容为...
第62天交易,操作内容为...
第63天交易,操作内容为...
第64天交易,操作内容为...
第65天交易,操作内容为...
第66天交易,操作内容为...
第67天交易,操作内容为...
第68天交易,操作内容为...
第69天交易,操作内容为...
第70天交易,操作内容为...
第71天交易,操作内容为...
第72天交易,操作内容为...
第73天交易,操作内容为...
第74天交易,操作内容为...
第75天交易,操作内容为...
第76天交易,操作内容为...
第77天交易,操作内容为...
第78天交易,操作内容为...
第79天交易,操作内容为...
第80天交易,操作内容为...
第81天交易,操作内容为...
第82天交易,操作内容为...
第83天交易,操作内容为...
第84天交易,操作内容为...
第85天交易,操作内容为...
第86天交易,操作内容为...
第87天交易,操作内容为...
第88天交易,操作内容为...
第89天交易,操作内容为...
第90天交易,操作内容为...
第91天交易,操作内容为...
第92天交易,操作内容为...
第93天交易,操作内容为...
第94天交易,操作内容为...
第95天交易,操作内容为...
第96天交易,操作内容为...
第97天交易,操作内容为...
第98天交易,操作内容为...
第99天交易,操作内容为...
第100天交易,操作内容为...
把日志打印到文件后,可以慢慢核对你的程序逻辑,再配上一些中间结果的df表,能够提高一定的效率,比盯着屏幕上下翻滚,效果高一些!
下文为一个测试案例的日志文档
===========2014-01-02===========
回测第一天,选板块,选基金
本月选出来的板块:Any["yc"]
所有板块对应的基金集合:Any["510160", "510050", "510880", "510010", "510300", "510330", "510630", "159901", "159903", "159902", "159907", "510510", "159922", "159909", "510500"]
今天不开仓
今天不平仓
收盘后结算完毕
盘后证券账户可用资金:3.0e7
盘后银行账户可用资金:0.0
===========2014-01-03===========
今天不开仓
今天是平仓日
持仓表为空,没有需要平仓的标的
收盘后结算完毕
盘后证券账户可用资金:3.0e7
盘后银行账户可用资金:0.0
===========2014-01-06===========
今天是开仓的交易日
筛选出10只基金:Any["510330", "510630", "159901", "159903", "159902", "159907", "510510", "159922", "159909", "510500"]
股票可调用资金 = 3.0e7其中本地资金:3.0e7银行资金:0.0
每只股票可用资金kc_money为:3.0e6
委托信息:证券代码:510330 可用资金:3.0e6 建仓价格:1.993
建仓结果:建仓手数 = 15048.0 成交金额 = 2.9990664000000004e6 手续费 = 899.71992
委托信息:证券代码:510630 可用资金:3.0e6 建仓价格:0.265
建仓结果:建仓手数 = 113173.0 成交金额 = 2.9990845e6 手续费 = 899.7253499999999
委托信息:证券代码:159901 可用资金:3.0e6 建仓价格:1.393
建仓结果:建仓手数 = 21529.0 成交金额 = 2.9989897e6 手续费 = 899.69691
委托信息:证券代码:159903 可用资金:3.0e6 建仓价格:0.829
建仓结果:建仓手数 = 36177.0 成交金额 = 2.9990733e6 手续费 = 899.7219899999999
委托信息:证券代码:159902 可用资金:3.0e6 建仓价格:2.365
建仓结果:建仓手数 = 12681.0 成交金额 = 2.9990565000000005e6 手续费 = 899.7169500000001
委托信息:证券代码:159907 可用资金:3.0e6 建仓价格:0.958
建仓结果:建仓手数 = 31305.0 成交金额 = 2.999019e6 手续费 = 899.7056999999999
委托信息:证券代码:510510 可用资金:3.0e6 建仓价格:1.07
建仓结果:建仓手数 = 28028.0 成交金额 = 2.998996e6 手续费 = 899.6987999999999
委托信息:证券代码:159922 可用资金:3.0e6 建仓价格:3.803
建仓结果:建仓手数 = 7886.0 成交金额 = 2.9990458e6 手续费 = 899.7137399999999
委托信息:证券代码:159909 可用资金:3.0e6 建仓价格:3.635
建仓结果:建仓手数 = 8250.0 成交金额 = 2.998875e6 手续费 = 899.6624999999999
委托信息:证券代码:510500 可用资金:3.0e6 建仓价格:3.785
建仓结果:建仓手数 = 7923.0 成交金额 = 2.9988555e6 手续费 = 899.6566499999999
今天不平仓
收盘后结算完毕
盘后证券账户可用资金:941.2814900025451
盘后银行账户可用资金:0.0
......