Log


Log(...msgs)

参数```msg```为输出的内容,参数```msg```可以传递多个。
msg
false
string / number / bool / object / array / any (平台支持的任意类型)

```javascript
function main() {
    Log("msg1", "msg2", "msg3")
}```
```python
def main():
    Log("msg1", "msg2", "msg3")```
```cpp
void main() {
    Log("msg1", "msg2", "msg3");
}```
可以传递多个```msg```参数:
```javascript
function main() {
    Log("发明者量化你好 !@")
    Sleep(1000 * 5)
    // 字符串内加入#ff0000,打印日志显示为红色,并且推送消息
    Log("你好, #ff0000@")
}```
```python
def main():
    Log("发明者量化你好 !@")
    Sleep(1000 * 5)
    Log("你好, #ff0000@")```
```cpp
void main() {
    Log("发明者量化你好 !@");
    Sleep(1000 * 5);
    Log("你好, #ff0000@");
}```
支持设置输出消息的颜色,如果同时使用颜色设置和推送功能,需要先设置颜色,最后使用```@```字符设置推送。
```javascript
function main() {
    Log("`data:image/png;base64,AAAA`")
}```
```python
def main():
    Log("`data:image/png;base64,AAAA`")```
```cpp
void main() {
    Log("`data:image/png;base64,AAAA`");
}```
```Log()```函数支持打印```base64```编码后的图片,以``` ` ```开头,以``` ` ```结尾,例如:
```python
import matplotlib.pyplot as plt
def main():
    plt.plot([3,6,2,4,7,1])
    Log(plt)```
```Log()```函数支持直接打印```Python```的```matplotlib.pyplot```对象,只要对象包含```savefig```方法就可以直接使用```Log```函数打印,例如:
```javascript
function main() {
    Log("[trans]中文|abc[/trans]")
}```
```python
def main():
    Log("[trans]中文|abc[/trans]")```
```cpp
void main() {
    Log("[trans]中文|abc[/trans]");
}```
```Log()```函数支持语言切换,```Log()```函数输出文本会根据平台页面上的语言设置自动切换为对应的语言,例如:

```Log()```函数在实盘或回测系统的日志区域输出一条日志信息,实盘运行时日志会保存在实盘的数据库中。```Log()```函数输出的内容以```@```字符结尾时,该条日志会进入消息推送队列,推送到当前发明者量化交易平台账号[推送设置](https://www.fmz.com/m/account)中配置的邮箱、WebHook地址等。[调试工具](https://www.fmz.com/m/debug)、回测系统不支持消息推送。消息推送有频率限制,具体限制规则如下:在一个实盘20秒周期内,只有最后一条推送消息会被保留并进行推送,其它消息将被过滤,不进行推送(通过Log函数输出的推送日志会正常打印显示在日志区域)。
关于```WebHook```推送,可以使用```Golang```编写的服务程序:
```golang
package main

import (
    "fmt"
    "net/http"
)

func Handle (w http.ResponseWriter, r *http.Request) {
    defer func() {
        fmt.Println("req:", *r)
    }()
}

func main () {
    fmt.Println("listen http://localhost:9090")
    http.HandleFunc("/data", Handle)
    http.ListenAndServe(":9090", nil)
}

推送设置中设置WebHookhttp://XXX.XX.XXX.XX:9090/data?data=Hello_FMZ,运行编写好的Golang服务程序后,开始实盘运行策略,以下为JavaScript语言编写的策略,策略运行时执行Log()函数并推送消息:

function main() {
    Log("msg", "@")
}
```log
listen http://localhost:9090

req: {GET /data?data=Hello_FMZ HTTP/1.1 1 1
map[User-Agent:[Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.x.xxxx.xxx
Safari/537.36] Accept-Encoding:[gzip]] {} <nil> 0 [] false
1XX.XX.X.XX:9090 map[] map[] <nil> map[] XXX.XX.XXX.XX:4xxx2
/data?data=Hello_FMZ <nil> <nil> <nil> 0xc420056300

{@fun/Log/LogReset LogReset}, {@fun/Log/LogVacuum LogVacuum}