jspurefix 5.11.1 → 5.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +13 -1
  2. package/dist/buffer/fixml/fixml-parser.js +1 -1
  3. package/dist/buffer/fixml/fixml-parser.js.map +1 -1
  4. package/dist/config/empty-log-factory.d.ts +2 -2
  5. package/dist/config/empty-log-factory.js +1 -1
  6. package/dist/config/empty-log-factory.js.map +1 -1
  7. package/dist/config/get-js-fx-logger.d.ts +2 -2
  8. package/dist/config/get-js-fx-logger.js.map +1 -1
  9. package/dist/config/js-fix-logger-factory.d.ts +2 -2
  10. package/dist/config/js-fix-logger-factory.js.map +1 -1
  11. package/dist/config/js-fix-logger.d.ts +9 -8
  12. package/dist/config/js-fix-logger.js +4 -4
  13. package/dist/config/js-fix-logger.js.map +1 -1
  14. package/dist/config/js-fix-winston-log-factory.d.ts +2 -2
  15. package/dist/config/js-fix-winston-log-factory.js +2 -2
  16. package/dist/config/js-fix-winston-log-factory.js.map +1 -1
  17. package/dist/config/winston-logger.d.ts +5 -2
  18. package/dist/config/winston-logger.js +57 -9
  19. package/dist/config/winston-logger.js.map +1 -1
  20. package/dist/dictionary/fragment-safety.d.ts +26 -0
  21. package/dist/dictionary/fragment-safety.js +154 -0
  22. package/dist/dictionary/fragment-safety.js.map +1 -0
  23. package/dist/dictionary/index.d.ts +1 -0
  24. package/dist/dictionary/index.js +1 -0
  25. package/dist/dictionary/index.js.map +1 -1
  26. package/dist/runtime/make-config.js +1 -1
  27. package/dist/runtime/make-config.js.map +1 -1
  28. package/dist/runtime/session-launcher.js +1 -1
  29. package/dist/runtime/session-launcher.js.map +1 -1
  30. package/dist/sample/http/oms/http-client.js +1 -1
  31. package/dist/sample/http/oms/http-client.js.map +1 -1
  32. package/dist/sample/http/oms/http-server.js +1 -1
  33. package/dist/sample/http/oms/http-server.js.map +1 -1
  34. package/dist/sample/tcp/qf-md/md-client.js +1 -1
  35. package/dist/sample/tcp/qf-md/md-client.js.map +1 -1
  36. package/dist/sample/tcp/qf-md/md-server.js +1 -1
  37. package/dist/sample/tcp/qf-md/md-server.js.map +1 -1
  38. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js +1 -1
  39. package/dist/sample/tcp/recovering-skeleton/respawn-acceptor.js.map +1 -1
  40. package/dist/sample/tcp/recovering-skeleton/skeleton-client.js +1 -1
  41. package/dist/sample/tcp/recovering-skeleton/skeleton-client.js.map +1 -1
  42. package/dist/sample/tcp/recovering-skeleton/skeleton-server.js +1 -1
  43. package/dist/sample/tcp/recovering-skeleton/skeleton-server.js.map +1 -1
  44. package/dist/sample/tcp/skeleton/skeleton-session.js +1 -1
  45. package/dist/sample/tcp/skeleton/skeleton-session.js.map +1 -1
  46. package/dist/sample/tcp/trade-capture/trade-capture-client.js +1 -1
  47. package/dist/sample/tcp/trade-capture/trade-capture-client.js.map +1 -1
  48. package/dist/sample/tcp/trade-capture/trade-capture-server.js +1 -1
  49. package/dist/sample/tcp/trade-capture/trade-capture-server.js.map +1 -1
  50. package/dist/store/fix-msg-memory-store.js +1 -1
  51. package/dist/store/fix-msg-memory-store.js.map +1 -1
  52. package/dist/transport/ascii/ascii-msg-transmitter.js +1 -1
  53. package/dist/transport/ascii/ascii-msg-transmitter.js.map +1 -1
  54. package/dist/transport/ascii/ascii-session.js +1 -1
  55. package/dist/transport/ascii/ascii-session.js.map +1 -1
  56. package/dist/transport/http/http-acceptor-listener.js +1 -1
  57. package/dist/transport/http/http-acceptor-listener.js.map +1 -1
  58. package/dist/transport/http/http-acceptor.js +2 -2
  59. package/dist/transport/http/http-acceptor.js.map +1 -1
  60. package/dist/transport/http/http-initiator.js +1 -1
  61. package/dist/transport/http/http-initiator.js.map +1 -1
  62. package/dist/transport/http/http-json-sample-adapter.js +1 -1
  63. package/dist/transport/http/http-json-sample-adapter.js.map +1 -1
  64. package/dist/transport/session/fix-session.js +3 -3
  65. package/dist/transport/session/fix-session.js.map +1 -1
  66. package/dist/transport/session/session-registry.js +1 -1
  67. package/dist/transport/session/session-registry.js.map +1 -1
  68. package/dist/transport/tcp/recovering-tcp-initiator.js +1 -1
  69. package/dist/transport/tcp/recovering-tcp-initiator.js.map +1 -1
  70. package/dist/transport/tcp/tcp-acceptor-listener.js +2 -2
  71. package/dist/transport/tcp/tcp-acceptor-listener.js.map +1 -1
  72. package/dist/transport/tcp/tcp-acceptor.js +2 -2
  73. package/dist/transport/tcp/tcp-acceptor.js.map +1 -1
  74. package/dist/transport/tcp/tcp-initiator-connector.js +2 -2
  75. package/dist/transport/tcp/tcp-initiator-connector.js.map +1 -1
  76. package/dist/transport/tcp/tcp-initiator.js +1 -1
  77. package/dist/transport/tcp/tcp-initiator.js.map +1 -1
  78. package/docs/instrumentation.md +360 -0
  79. package/docs/scattered-components.md +280 -0
  80. package/jsfix.test_client.txt +62 -62
  81. package/jsfix.test_server.txt +72 -72
  82. package/package.json +1 -1
  83. package/src/buffer/fixml/fixml-parser.ts +1 -1
  84. package/src/config/empty-log-factory.ts +2 -2
  85. package/src/config/get-js-fx-logger.ts +2 -2
  86. package/src/config/js-fix-logger-factory.ts +8 -2
  87. package/src/config/js-fix-logger.ts +23 -8
  88. package/src/config/js-fix-winston-log-factory.ts +3 -3
  89. package/src/config/winston-logger.ts +93 -10
  90. package/src/dictionary/fragment-safety.ts +225 -0
  91. package/src/dictionary/index.ts +1 -0
  92. package/src/runtime/make-config.ts +1 -1
  93. package/src/runtime/session-launcher.ts +1 -1
  94. package/src/sample/http/oms/http-client.ts +1 -1
  95. package/src/sample/http/oms/http-server.ts +1 -1
  96. package/src/sample/tcp/qf-md/md-client.ts +1 -1
  97. package/src/sample/tcp/qf-md/md-server.ts +1 -1
  98. package/src/sample/tcp/recovering-skeleton/respawn-acceptor.ts +2 -1
  99. package/src/sample/tcp/recovering-skeleton/skeleton-client.ts +1 -1
  100. package/src/sample/tcp/recovering-skeleton/skeleton-server.ts +1 -1
  101. package/src/sample/tcp/skeleton/skeleton-session.ts +1 -1
  102. package/src/sample/tcp/trade-capture/trade-capture-client.ts +2 -1
  103. package/src/sample/tcp/trade-capture/trade-capture-server.ts +2 -1
  104. package/src/store/fix-msg-memory-store.ts +2 -1
  105. package/src/transport/ascii/ascii-msg-transmitter.ts +2 -1
  106. package/src/transport/ascii/ascii-session.ts +2 -1
  107. package/src/transport/http/http-acceptor-listener.ts +2 -1
  108. package/src/transport/http/http-acceptor.ts +2 -1
  109. package/src/transport/http/http-initiator.ts +2 -1
  110. package/src/transport/http/http-json-sample-adapter.ts +1 -1
  111. package/src/transport/session/fix-session.ts +2 -1
  112. package/src/transport/session/session-registry.ts +1 -1
  113. package/src/transport/tcp/recovering-tcp-initiator.ts +2 -1
  114. package/src/transport/tcp/tcp-acceptor-listener.ts +4 -2
  115. package/src/transport/tcp/tcp-acceptor.ts +2 -1
  116. package/src/transport/tcp/tcp-initiator-connector.ts +4 -2
  117. package/src/transport/tcp/tcp-initiator.ts +2 -1
@@ -1,62 +1,62 @@
1
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:23.825|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
2
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:23.831|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=155|
3
- 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:23.832|7=1|16=1|10=243|
4
- 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260815-09:46:23.837|122=20260815-09:46:23.837|123=Y|36=2|10=127|
5
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:25.837|58=test_server confirming logout|10=097|
6
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:28.640|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
7
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:28.642|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=160|
8
- 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:28.643|7=1|16=0|10=247|
9
- 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260815-09:46:28.645|122=20260815-09:46:28.645|123=Y|36=2|10=131|
10
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:30.645|58=test_server confirming logout|10=090|
11
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:33.113|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=101|
12
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:33.114|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=150|
13
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:33.115|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=104|
14
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:33.644|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
15
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:33.646|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=160|
16
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:34.648|58=test_server confirming logout|10=097|
17
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:46:35.116|58=test_client initiate logout|10=106|
18
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:37.356|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=114|
19
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:37.357|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=163|
20
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:38.360|58=test_server confirming logout|10=092|
21
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:41.100|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=096|
22
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:41.101|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=145|
23
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=0|57=fix|52=20260815-09:46:42.103|58=test_client initiate logout|10=097|
24
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:44.590|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=112|
25
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=5|57=fix|52=20260815-09:46:44.591|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=165|
26
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:45.592|58=test_server confirming logout|10=097|
27
- 8=FIX.4.4|9=0000110|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:48.059|98=0|141=Y|553=js-client|554=pwd-client|10=184|
28
- 8=FIX.4.4|9=0000125|35=3|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:48.061|45=1|372=A|373=1|58=msgType A missing required tag 108|10=010|
29
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:52.637|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=113|
30
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:52.638|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=162|
31
- 8=FIX.4.4|9=0000111|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:52.640|45=2|372=ZZ|373=11|58=msgType ZZ unknown|10=156|
32
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:46:54.641|58=test_server confirming logout|10=093|
33
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:57.385|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=118|
34
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:57.387|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=168|
35
- 8=FIX.4.4|9=0000146|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:57.389|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 143|10=092|
36
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:46:59.389|58=test_server confirming logout|10=107|
37
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:01.387|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
38
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:05.874|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=115|
39
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:47:05.876|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=165|
40
- 8=FIX.4.4|9=0000145|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:47:05.877|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 59|10=045|
41
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:47:07.878|58=test_server confirming logout|10=104|
42
- 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:10.344|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=053|
43
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:47:10.346|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=153|
44
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:47:12.349|112=Sat, 15 Aug 2026 09:47:12 GMT|10=151|
45
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:47:14.351|112=Sat, 15 Aug 2026 09:47:14 GMT|10=149|
46
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:47:16.348|58=test_server confirming logout|10=095|
47
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:18.810|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=109|
48
- 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:47:18.811|98=0|108=2|141=Y|553=js-server|554=pwd-server|10=108|
49
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:47:20.817|112=Sat, 15 Aug 2026 09:47:20 GMT|10=149|
50
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:47:22.820|112=Sat, 15 Aug 2026 09:47:22 GMT|10=148|
51
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=4|57=fix|52=20260815-09:47:24.822|112=Sat, 15 Aug 2026 09:47:24 GMT|10=155|
52
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=5|57=fix|52=20260815-09:47:26.814|58=test_server confirming logout|10=097|
53
- 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:29.522|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=061|
54
- 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:47:29.524|98=0|108=5|141=Y|553=js-server|554=pwd-server|10=114|
55
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:47:31.528|112=Sat, 15 Aug 2026 09:47:31 GMT|10=152|
56
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:47:33.530|112=Sat, 15 Aug 2026 09:47:33 GMT|10=150|
57
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:47:34.533|112=Sat, 15 Aug 2026 09:47:34 GMT|10=154|
58
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=4|57=fix|52=20260815-09:47:35.531|112=Sat, 15 Aug 2026 09:47:35 GMT|10=156|
59
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:47:37.526|58=test_server confirming logout|10=097|
60
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:49:49.210|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=109|
61
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:49:49.220|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
62
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:49:50.224|58=test_server confirming logout|10=088|
1
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:21.385|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=106|
2
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:21.389|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
3
+ 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:21.390|7=1|16=1|10=237|
4
+ 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260816-15:45:21.393|122=20260816-15:45:21.393|123=Y|36=2|10=111|
5
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:23.393|58=test_server confirming logout|10=089|
6
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:25.852|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=109|
7
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:25.853|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
8
+ 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:25.853|7=1|16=0|10=244|
9
+ 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260816-15:45:25.855|122=20260816-15:45:25.855|123=Y|36=2|10=125|
10
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:27.855|58=test_server confirming logout|10=096|
11
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:30.443|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=101|
12
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:30.445|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=151|
13
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:30.445|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=104|
14
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:30.879|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=114|
15
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:30.880|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=154|
16
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:31.883|58=test_server confirming logout|10=092|
17
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:45:32.446|58=test_client initiate logout|10=106|
18
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:34.248|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=108|
19
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:34.249|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=157|
20
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:35.251|58=test_server confirming logout|10=085|
21
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:37.616|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
22
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:37.618|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=160|
23
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=0|57=fix|52=20260816-15:45:38.622|58=test_client initiate logout|10=105|
24
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:40.985|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=113|
25
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=5|57=fix|52=20260816-15:45:40.986|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=166|
26
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:41.988|58=test_server confirming logout|10=099|
27
+ 8=FIX.4.4|9=0000110|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:44.346|98=0|141=Y|553=js-client|554=pwd-client|10=176|
28
+ 8=FIX.4.4|9=0000125|35=3|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:44.347|45=1|372=A|373=1|58=msgType A missing required tag 108|10=010|
29
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:48.795|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=120|
30
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:48.797|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=170|
31
+ 8=FIX.4.4|9=0000111|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:48.798|45=2|372=ZZ|373=11|58=msgType ZZ unknown|10=172|
32
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:45:50.798|58=test_server confirming logout|10=099|
33
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:53.367|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=111|
34
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:53.369|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=161|
35
+ 8=FIX.4.4|9=0000146|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:53.371|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 143|10=076|
36
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:45:55.371|58=test_server confirming logout|10=091|
37
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:57.369|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=117|
38
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:46:01.748|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=108|
39
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:46:01.749|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=157|
40
+ 8=FIX.4.4|9=0000145|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:46:01.750|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 59|10=028|
41
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:46:03.751|58=test_server confirming logout|10=087|
42
+ 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:46:06.108|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=053|
43
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:46:06.109|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=152|
44
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:46:08.113|112=Sun, 16 Aug 2026 15:46:08 GMT|10=158|
45
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:46:10.116|112=Sun, 16 Aug 2026 15:46:10 GMT|10=148|
46
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:46:12.109|58=test_server confirming logout|10=083|
47
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:46:14.465|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=108|
48
+ 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:46:14.466|98=0|108=2|141=Y|553=js-server|554=pwd-server|10=107|
49
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:46:16.471|112=Sun, 16 Aug 2026 15:46:16 GMT|10=163|
50
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:46:18.473|112=Sun, 16 Aug 2026 15:46:18 GMT|10=170|
51
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=4|57=fix|52=20260816-15:46:20.478|112=Sun, 16 Aug 2026 15:46:20 GMT|10=162|
52
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=5|57=fix|52=20260816-15:46:22.468|58=test_server confirming logout|10=095|
53
+ 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:46:25.026|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=053|
54
+ 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:46:25.027|98=0|108=5|141=Y|553=js-server|554=pwd-server|10=105|
55
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:46:27.031|112=Sun, 16 Aug 2026 15:46:27 GMT|10=159|
56
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:46:29.035|112=Sun, 16 Aug 2026 15:46:29 GMT|10=168|
57
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:46:30.037|112=Sun, 16 Aug 2026 15:46:30 GMT|10=153|
58
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=4|57=fix|52=20260816-15:46:31.039|112=Sun, 16 Aug 2026 15:46:31 GMT|10=159|
59
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:46:33.029|58=test_server confirming logout|10=088|
60
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:48:24.476|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=113|
61
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:48:24.482|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
62
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:48:25.486|58=test_server confirming logout|10=097|
@@ -1,75 +1,75 @@
1
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:23.825|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
2
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:23.831|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=155|
3
- 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:23.832|7=1|16=1|10=243|
4
- 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260815-09:46:23.837|122=20260815-09:46:23.837|123=Y|36=2|10=127|
5
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:46:25.835|58=test_client initiate logout|10=113|
6
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:25.837|58=test_server confirming logout|10=097|
7
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:28.640|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
8
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:28.642|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=160|
9
- 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:28.643|7=1|16=0|10=247|
10
- 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260815-09:46:28.645|122=20260815-09:46:28.645|123=Y|36=2|10=131|
11
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:46:30.644|58=test_client initiate logout|10=107|
12
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:30.645|58=test_server confirming logout|10=090|
13
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:33.113|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=101|
14
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:33.114|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=150|
15
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:33.115|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=104|
16
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:33.644|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
17
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:33.646|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=160|
18
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:34.647|58=test_client initiate logout|10=113|
19
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:34.648|58=test_server confirming logout|10=097|
20
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:37.356|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=114|
21
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:37.357|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=163|
22
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:38.358|58=test_client initiate logout|10=116|
23
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:38.360|58=test_server confirming logout|10=092|
24
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:41.100|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=096|
25
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:41.101|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=145|
26
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=0|57=fix|52=20260815-09:46:42.103|58=test_client initiate logout|10=097|
27
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:44.590|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=112|
28
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=5|57=fix|52=20260815-09:46:44.591|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=165|
29
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:46:45.591|58=test_client initiate logout|10=113|
30
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:45.592|58=test_server confirming logout|10=097|
31
- 8=FIX.4.4|9=0000110|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:48.059|98=0|141=Y|553=js-client|554=pwd-client|10=184|
32
- 8=FIX.4.4|9=0000125|35=3|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:48.061|45=1|372=A|373=1|58=msgType A missing required tag 108|10=010|
33
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:52.637|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=113|
34
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:52.638|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=162|
1
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:21.385|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=106|
2
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:21.389|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
3
+ 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:21.390|7=1|16=1|10=237|
4
+ 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260816-15:45:21.393|122=20260816-15:45:21.393|123=Y|36=2|10=111|
5
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:45:23.392|58=test_client initiate logout|10=106|
6
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:23.393|58=test_server confirming logout|10=089|
7
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:25.852|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=109|
8
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:25.853|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
9
+ 8=FIX.4.4|9=0000079|35=2|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:25.853|7=1|16=0|10=244|
10
+ 8=FIX.4.4|9=0000112|35=4|49=accept-comp|56=init-comp|34=1|57=fix|43=Y|52=20260816-15:45:25.855|122=20260816-15:45:25.855|123=Y|36=2|10=125|
11
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:45:27.854|58=test_client initiate logout|10=113|
12
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:27.855|58=test_server confirming logout|10=096|
13
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:30.443|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=101|
14
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:30.445|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=151|
15
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:30.445|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=104|
16
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:30.879|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=114|
17
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:30.880|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=154|
18
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:31.882|58=test_client initiate logout|10=108|
19
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:31.883|58=test_server confirming logout|10=092|
20
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:34.248|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=108|
21
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:34.249|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=157|
22
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:35.250|58=test_client initiate logout|10=101|
23
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:35.251|58=test_server confirming logout|10=085|
24
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:37.616|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=110|
25
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:37.618|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=160|
26
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=0|57=fix|52=20260816-15:45:38.622|58=test_client initiate logout|10=105|
27
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:40.985|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=113|
28
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=5|57=fix|52=20260816-15:45:40.986|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=166|
29
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:45:41.987|58=test_client initiate logout|10=115|
30
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:41.988|58=test_server confirming logout|10=099|
31
+ 8=FIX.4.4|9=0000110|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:44.346|98=0|141=Y|553=js-client|554=pwd-client|10=176|
32
+ 8=FIX.4.4|9=0000125|35=3|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:44.347|45=1|372=A|373=1|58=msgType A missing required tag 108|10=010|
33
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:48.795|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=120|
34
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:48.797|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=170|
35
35
  8=FIX4.4|9=0000136|35=ZZ|49=init-comp|56=accept-comp|34=2|57=fix|52=20180902-12:25:28.980|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=177|
36
- 8=FIX.4.4|9=0000111|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:52.640|45=2|372=ZZ|373=11|58=msgType ZZ unknown|10=156|
37
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:46:54.640|58=test_client initiate logout|10=109|
38
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:46:54.641|58=test_server confirming logout|10=093|
39
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:46:57.385|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=118|
40
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:46:57.387|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=168|
36
+ 8=FIX.4.4|9=0000111|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:48.798|45=2|372=ZZ|373=11|58=msgType ZZ unknown|10=172|
37
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:45:50.797|58=test_client initiate logout|10=115|
38
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:45:50.798|58=test_server confirming logout|10=099|
39
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:45:53.367|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=111|
40
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:45:53.369|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=161|
41
41
  8=FIX4.4|9=0000123|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20180902-12:25:59.161|999=Sun, 02 Sep 2018 12:25:59 GMT|10=95|
42
- 8=FIX.4.4|9=0000146|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:46:57.389|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 143|10=092|
43
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:46:59.388|58=test_client initiate logout|10=123|
44
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:46:59.389|58=test_server confirming logout|10=107|
45
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:05.874|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=115|
46
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:47:05.876|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=165|
42
+ 8=FIX.4.4|9=0000146|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:45:53.371|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 143|10=076|
43
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:45:55.370|58=test_client initiate logout|10=107|
44
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:45:55.371|58=test_server confirming logout|10=091|
45
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:46:01.748|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=108|
46
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:46:01.749|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=157|
47
47
  8=FIX4.4|9=0000123|35=0|49=init-not!|56=accept-comp|34=2|57=fix|52=20180902-12:25:59.161|112=Sun, 02 Sep 2018 12:25:59 GMT|10=95|
48
- 8=FIX.4.4|9=0000145|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:47:05.877|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 59|10=045|
49
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:47:07.877|58=test_client initiate logout|10=120|
50
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:47:07.878|58=test_server confirming logout|10=104|
51
- 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:10.344|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=053|
52
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:47:10.346|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=153|
53
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:47:12.349|112=Sat, 15 Aug 2026 09:47:12 GMT|10=151|
54
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:47:14.351|112=Sat, 15 Aug 2026 09:47:14 GMT|10=149|
55
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=4|57=fix|52=20260815-09:47:16.347|58=test_client initiate logout|10=113|
56
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:47:16.348|58=test_server confirming logout|10=095|
57
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:18.810|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=109|
58
- 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:47:18.811|98=0|108=2|141=Y|553=js-server|554=pwd-server|10=108|
59
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:47:20.817|112=Sat, 15 Aug 2026 09:47:20 GMT|10=149|
60
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:47:22.820|112=Sat, 15 Aug 2026 09:47:22 GMT|10=148|
61
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=4|57=fix|52=20260815-09:47:24.822|112=Sat, 15 Aug 2026 09:47:24 GMT|10=155|
62
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:47:26.813|58=test_client initiate logout|10=110|
63
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=5|57=fix|52=20260815-09:47:26.814|58=test_server confirming logout|10=097|
64
- 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:47:29.522|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=061|
65
- 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:47:29.524|98=0|108=5|141=Y|553=js-server|554=pwd-server|10=114|
66
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:47:31.528|112=Sat, 15 Aug 2026 09:47:31 GMT|10=152|
67
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260815-09:47:33.530|112=Sat, 15 Aug 2026 09:47:33 GMT|10=150|
68
- 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:47:34.533|112=Sat, 15 Aug 2026 09:47:34 GMT|10=154|
69
- 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=4|57=fix|52=20260815-09:47:35.531|112=Sat, 15 Aug 2026 09:47:35 GMT|10=156|
70
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=5|57=fix|52=20260815-09:47:37.525|58=test_client initiate logout|10=115|
71
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260815-09:47:37.526|58=test_server confirming logout|10=097|
72
- 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260815-09:49:49.210|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=109|
73
- 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260815-09:49:49.220|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
74
- 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260815-09:49:50.222|58=test_client initiate logout|10=103|
75
- 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260815-09:49:50.224|58=test_server confirming logout|10=088|
48
+ 8=FIX.4.4|9=0000145|35=3|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:46:01.750|45=2|372=0|373=5|58=msgType 0 checksum failed. received = 95 computed = 59|10=028|
49
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:46:03.750|58=test_client initiate logout|10=103|
50
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:46:03.751|58=test_server confirming logout|10=087|
51
+ 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:46:06.108|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=053|
52
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:46:06.109|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=152|
53
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:46:08.113|112=Sun, 16 Aug 2026 15:46:08 GMT|10=158|
54
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:46:10.116|112=Sun, 16 Aug 2026 15:46:10 GMT|10=148|
55
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=4|57=fix|52=20260816-15:46:12.109|58=test_client initiate logout|10=102|
56
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:46:12.109|58=test_server confirming logout|10=083|
57
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:46:14.465|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=108|
58
+ 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:46:14.466|98=0|108=2|141=Y|553=js-server|554=pwd-server|10=107|
59
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:46:16.471|112=Sun, 16 Aug 2026 15:46:16 GMT|10=163|
60
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:46:18.473|112=Sun, 16 Aug 2026 15:46:18 GMT|10=170|
61
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=4|57=fix|52=20260816-15:46:20.478|112=Sun, 16 Aug 2026 15:46:20 GMT|10=162|
62
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:46:22.467|58=test_client initiate logout|10=108|
63
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=5|57=fix|52=20260816-15:46:22.468|58=test_server confirming logout|10=095|
64
+ 8=FIX.4.4|9=0000116|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:46:25.026|98=0|108=2|141=Y|553=js-client|554=pwd-client|10=053|
65
+ 8=FIX.4.4|9=0000116|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:46:25.027|98=0|108=5|141=Y|553=js-server|554=pwd-server|10=105|
66
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:46:27.031|112=Sun, 16 Aug 2026 15:46:27 GMT|10=159|
67
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=3|57=fix|52=20260816-15:46:29.035|112=Sun, 16 Aug 2026 15:46:29 GMT|10=168|
68
+ 8=FIX.4.4|9=0000104|35=0|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:46:30.037|112=Sun, 16 Aug 2026 15:46:30 GMT|10=153|
69
+ 8=FIX.4.4|9=0000104|35=0|49=init-comp|56=accept-comp|34=4|57=fix|52=20260816-15:46:31.039|112=Sun, 16 Aug 2026 15:46:31 GMT|10=159|
70
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=5|57=fix|52=20260816-15:46:33.028|58=test_client initiate logout|10=106|
71
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=3|57=fix|52=20260816-15:46:33.029|58=test_server confirming logout|10=088|
72
+ 8=FIX.4.4|9=0000117|35=A|49=init-comp|56=accept-comp|34=1|57=fix|52=20260816-15:48:24.476|98=0|108=30|141=Y|553=js-client|554=pwd-client|10=113|
73
+ 8=FIX.4.4|9=0000117|35=A|49=accept-comp|56=init-comp|34=1|57=fix|52=20260816-15:48:24.482|98=0|108=30|141=Y|553=js-server|554=pwd-server|10=158|
74
+ 8=FIX.4.4|9=0000101|35=5|49=init-comp|56=accept-comp|34=2|57=fix|52=20260816-15:48:25.484|58=test_client initiate logout|10=112|
75
+ 8=FIX.4.4|9=0000103|35=5|49=accept-comp|56=init-comp|34=2|57=fix|52=20260816-15:48:25.486|58=test_server confirming logout|10=097|
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jspurefix",
3
- "version": "5.11.1",
3
+ "version": "5.11.3",
4
4
  "description": "pure node js fix engine",
5
5
  "keywords": [
6
6
  "typescript",
@@ -37,7 +37,7 @@ export class FiXmlParser extends MsgParser {
37
37
  this.definitions = this.config.definitions
38
38
  const description = config.description
39
39
  const me = description?.application?.name
40
- this.logger = config.logFactory.logger(`${me}:FiXmlParser`)
40
+ this.logger = config.logFactory.logger(`${me}:FiXmlParser`, { component: 'FixmlParser', app: me })
41
41
  this.saxStream = require('sax').createStream(true, {})
42
42
  this.locations = new Tags(maxMessageLocations)
43
43
  this.logger.info('subscribe to stream')
@@ -1,8 +1,8 @@
1
- import { EmptyLogger, IJsFixLogger } from './js-fix-logger'
1
+ import { EmptyLogger, IJsFixLogger, JsFixLogFields } from './js-fix-logger'
2
2
  import { JsFixLoggerFactory } from './js-fix-logger-factory'
3
3
 
4
4
  export class EmptyLogFactory extends JsFixLoggerFactory {
5
- public logger (type: string): IJsFixLogger {
5
+ public logger (type: string, _?: JsFixLogFields): IJsFixLogger {
6
6
  return new EmptyLogger(type)
7
7
  }
8
8
 
@@ -1,3 +1,3 @@
1
- import { IJsFixLogger } from './js-fix-logger'
1
+ import { IJsFixLogger, JsFixLogFields } from './js-fix-logger'
2
2
 
3
- export type GetJsFixLogger = (type: string) => IJsFixLogger
3
+ export type GetJsFixLogger = (type: string, context?: JsFixLogFields) => IJsFixLogger
@@ -1,6 +1,12 @@
1
- import { IJsFixLogger } from './js-fix-logger'
1
+ import { IJsFixLogger, JsFixLogFields } from './js-fix-logger'
2
2
 
3
3
  export abstract class JsFixLoggerFactory {
4
- public abstract logger (type: string): IJsFixLogger
4
+ /**
5
+ * @param type the legacy display name, e.g. 'me:peer:FixSession'. it is what the
6
+ * console format renders between brackets, so it is passed verbatim and unchanged
7
+ * @param context fields bound to every line this logger writes. an implementation
8
+ * written before this argument existed keeps compiling and simply ignores it
9
+ */
10
+ public abstract logger (type: string, context?: JsFixLogFields): IJsFixLogger
5
11
  public abstract plain (fileName: string, maxSize?: number): IJsFixLogger
6
12
  }
@@ -1,27 +1,42 @@
1
+ /**
2
+ * structured fields carried alongside a log message.
3
+ *
4
+ * two kinds travel through the same shape. *context* is bound once when a logger is made
5
+ * and repeats on every line it writes - the component, the application, the counterparty.
6
+ * *fields* are supplied per call and carry a value worth aggregating on - a msgType, a
7
+ * sequence number, a byte count.
8
+ *
9
+ * they are deliberately kept as a bag rather than spread into the log record, so a caller
10
+ * passing { message: ... } cannot clobber the real message, and so the choice of how to
11
+ * render them belongs to the formatter rather than the engine. see
12
+ * docs/instrumentation.md.
13
+ */
14
+ export type JsFixLogFields = Record<string, unknown>
15
+
1
16
  export interface IJsFixLogger {
2
- info: (message: string) => void
3
- warning: (message: string) => void
4
- debug: (message: string) => void
5
- error: (e: Error) => void
17
+ info: (message: string, fields?: JsFixLogFields) => void
18
+ warning: (message: string, fields?: JsFixLogFields) => void
19
+ debug: (message: string, fields?: JsFixLogFields) => void
20
+ error: (e: Error, fields?: JsFixLogFields) => void
6
21
  }
7
22
 
8
23
  export class EmptyLogger implements IJsFixLogger {
9
24
  constructor (public readonly type: string = '') {
10
25
  }
11
26
 
12
- public info (_: string): void {
27
+ public info (_: string, __?: JsFixLogFields): void {
13
28
  // nothing
14
29
  }
15
30
 
16
- public warning (_: string): void {
31
+ public warning (_: string, __?: JsFixLogFields): void {
17
32
  // nothing
18
33
  }
19
34
 
20
- public debug (_: string): void {
35
+ public debug (_: string, __?: JsFixLogFields): void {
21
36
  // nothing
22
37
  }
23
38
 
24
- public error (_: Error): void {
39
+ public error (_: Error, __?: JsFixLogFields): void {
25
40
  // nothing
26
41
  }
27
42
  }
@@ -1,4 +1,4 @@
1
- import { IJsFixLogger } from './js-fix-logger'
1
+ import { IJsFixLogger, JsFixLogFields } from './js-fix-logger'
2
2
  import { WinstonLogger } from './winston-logger'
3
3
  import { JsFixLoggerFactory } from './js-fix-logger-factory'
4
4
 
@@ -10,8 +10,8 @@ export class JsFixWinstonLogFactory extends JsFixLoggerFactory {
10
10
  this.wl = new WinstonLogger(options)
11
11
  }
12
12
 
13
- public logger (type: string): IJsFixLogger {
14
- return this.wl.make(type)
13
+ public logger (type: string, context?: JsFixLogFields): IJsFixLogger {
14
+ return this.wl.make(type, context)
15
15
  }
16
16
 
17
17
  public plain (fileName: string, maxSize?: number): IJsFixLogger {
@@ -1,9 +1,15 @@
1
- import { IJsFixLogger } from './js-fix-logger'
1
+ import { IJsFixLogger, JsFixLogFields } from './js-fix-logger'
2
2
  import { Logger } from 'winston'
3
3
  const { createLogger, format, transports } = require('winston')
4
4
  const { combine, timestamp, printf } = format
5
5
 
6
6
  export class WinstonLogger {
7
+ /**
8
+ * the format this engine has emitted since it shipped. it names exactly four fields, so
9
+ * the context and fields bags added later are invisible to it and the rendered line is
10
+ * unchanged - which is the whole reason they travel as separate keys. covered by a
11
+ * golden output test; do not widen it.
12
+ */
7
13
  public static readonly appFormat = printf((info: any) => {
8
14
  return `${info.timestamp} [${info.type}] ${info.level}: ${info.message}`
9
15
  })
@@ -12,6 +18,46 @@ export class WinstonLogger {
12
18
  return `${info.message}`
13
19
  })
14
20
 
21
+ /**
22
+ * flattens the context and fields bags to ECS style names for Filebeat and friends.
23
+ *
24
+ * this MUST mutate info rather than return a fresh object - a new object loses
25
+ * Symbol.for('level') and winston then discards the record with no output and no error.
26
+ */
27
+ public static readonly ecsFormat = format((info: any) => {
28
+ const context = info.context ?? {}
29
+ const fields = info.fields ?? {}
30
+ const err = info.err
31
+ delete info.context
32
+ delete info.fields
33
+ delete info.err
34
+ // the legacy display name is redundant once component and app are real fields
35
+ delete info.type
36
+ info['@timestamp'] = info.timestamp
37
+ info['log.level'] = info.level
38
+ info['service.name'] = 'jspurefix'
39
+ delete info.timestamp
40
+ // winston sets its own level, and emitting it beside the ECS name puts the same
41
+ // value on every line twice. the transport filters on Symbol.for('level'), not
42
+ // this property, so dropping it changes nothing about what gets logged
43
+ delete info.level
44
+ if (err) {
45
+ info['error.message'] = err.message
46
+ info['error.stack_trace'] = err.stack
47
+ // the record composed for the console carries the stack inside the message,
48
+ // because that is what has always been rendered there. here the stack has a
49
+ // field of its own, so repeating it in the message only doubles the line
50
+ info.message = err.message
51
+ }
52
+ for (const key of Object.keys(context)) {
53
+ info[`fix.${key}`] = context[key]
54
+ }
55
+ for (const key of Object.keys(fields)) {
56
+ info[`fix.${key}`] = fields[key]
57
+ }
58
+ return info
59
+ })
60
+
15
61
  private readonly appLogger: Logger
16
62
 
17
63
  constructor (public readonly options: any = WinstonLogger.consoleOptions()) {
@@ -31,6 +77,32 @@ export class WinstonLogger {
31
77
  }
32
78
  }
33
79
 
80
+ /**
81
+ * one JSON object per line, ECS style names, ready to be harvested. opt in - the
82
+ * console default is deliberately left alone so an upgrade does not move anyone's logs.
83
+ */
84
+ public static ecsOptions (level: string = 'debug'): any {
85
+ return {
86
+ format: combine(
87
+ timestamp(),
88
+ WinstonLogger.ecsFormat(),
89
+ format.json()
90
+ ),
91
+ level,
92
+ transports: [
93
+ new transports.Console()
94
+ ]
95
+ }
96
+ }
97
+
98
+ public static ecsFileOptions (fileName: string, level: string = 'debug', maxSize: number = 50 * 1024 * 1024): any {
99
+ return WinstonLogger.fileOptions(fileName, level, maxSize, combine(
100
+ timestamp(),
101
+ WinstonLogger.ecsFormat(),
102
+ format.json()
103
+ ))
104
+ }
105
+
34
106
  public static fileOptions (fileName: string, level: string = 'debug', maxSize: number = 50 * 1024 * 1024, format: any = combine(
35
107
  timestamp(),
36
108
  WinstonLogger.appFormat
@@ -82,31 +154,42 @@ export class WinstonLogger {
82
154
  } as IJsFixLogger
83
155
  }
84
156
 
85
- public make (type: string): IJsFixLogger {
157
+ public make (type: string, context?: JsFixLogFields): IJsFixLogger {
86
158
  const logger = this.appLogger
87
159
  return {
88
- info: function (msg: string): void {
160
+ info: function (msg: string, fields?: JsFixLogFields): void {
89
161
  logger.info({
90
162
  type,
91
- message: msg
163
+ message: msg,
164
+ context,
165
+ fields
92
166
  })
93
167
  },
94
- debug: function (msg: string): void {
168
+ debug: function (msg: string, fields?: JsFixLogFields): void {
95
169
  logger.debug({
96
170
  type,
97
- message: msg
171
+ message: msg,
172
+ context,
173
+ fields
98
174
  })
99
175
  },
100
- warning: function (msg: string): void {
176
+ warning: function (msg: string, fields?: JsFixLogFields): void {
101
177
  logger.warn({
102
178
  type,
103
- message: msg
179
+ message: msg,
180
+ context,
181
+ fields
104
182
  })
105
183
  },
106
- error: function (e: Error): void {
184
+ error: function (e: Error, fields?: JsFixLogFields): void {
107
185
  logger.error({
108
186
  type,
109
- message: `${e.message} : ${e.stack}`
187
+ // composed exactly as it always has been, so the console line does not move.
188
+ // the ecs format lifts error.message and error.stack_trace off err instead
189
+ message: `${e.message} : ${e.stack}`,
190
+ err: e,
191
+ context,
192
+ fields
110
193
  })
111
194
  }
112
195
  }