Skip to content

System

The Log Viewer component’s system logs offer insights into the entire system, including trade execution, connection status, alerts, warnings, margin percentage, among other details.

This section concentrates on the trade execution messages, so that you can follow an order through the stages of its execution. Every line starts with the UTC date and time, to the millisecond, and the level, followed by a message tag. Once a minute the engine also writes a stats: orders=<n> quotes=<n> line with the number of orders and quote updates it processed during that minute.

The following tags describe order processing, including fills, rejections and cancellations:

Tag Level When it is written
order_open INFO The order was accepted and its execution parameters were resolved.
bid_book / ask_book INFO The aggregated books captured when a leg opens. They can also be written when an order closes without opening a leg, provided a pool book is available and the order did not fail a margin check.
leg_open INFO A leg was sent to a Liquidity Provider or booked internally.
deal_done INFO A Liquidity Provider confirmed a fill for a leg.
leg_close INFO The leg completed.
order_close INFO The order completed. Orders that end unfilled because of a rejection or a failed margin check are written at WARN level with the extended layout described below.
order_reject WARN The order was rejected before execution started.
order_cancel INFO A cancel request was processed.

order_open

order_open : <order>: <connector type>|<connector>: account=<connector account> clOrdID=<id> [subID1=<v>] [subID2=<v>] [subID3=<v>] [subID4=<v>]: side=<BUY|SELL> type=<MARKET|LIMIT|STOP> instrument=<connector instrument> symbol=<security type>|<symbol>|<size unit>|<price unit>[|<factor>] size=<requested>|<A-book>|<B-book> minsize=<n> price=<n> dev=<n> ttl=<ms> PRICE[bid[maker=<n>,taker=<n>],ask[maker=<n>,taker=<n>]] LQ[pool=<pool>,mode=<mode>,boost=<n>,profile=<markup profile>] MARKUP[fix[layer=<n>,type=<type>,bid=<n>,ask=<n>,skew=<n>],flex[type=<type>,min=<n>,max=<n>,exec=<mode>,precision=<n>]] [LOCK[ref_price=<type>,mode=<mode>,unit=<unit>,gain=<n>,loss=<n>,dev=<true|false>]] A-BOOK[min=<n>,step=<n>,delay=<ms>] B-BOOK[bbook=<n>,lock=<n>,bob=<n>,boost=<n>,delay=<ms>,jitter=<ms>]
Field Explanation
<order> XCore order ID.
<connector type>|<connector> Type and name of the Connector that sent the order.
account The connector account that hosts the execution settings, such as the liquidity pool, the markup profile and the A-book and B-book parameters.
clOrdID Client order ID.
subID1 to subID4 The sub IDs of the order, shown only when present. For MT4 and MT5 connectors subID3 is the login; subID4 is the MT4 order ticket or the MT5 position ID.
side, type Order side and order type.
instrument Symbol name on the connector side.
symbol Security type, XCore symbol, size unit and price unit of the symbol. A contract factor is appended when it differs from 1.
size Requested size, followed by the part routed to the A-book and the part kept in the B-book.
minsize, price, dev, ttl Minimum fill size, requested price, maximum price deviation (-1 = unlimited) and time to live in milliseconds.
PRICE Bid and ask at the time of the order. maker is the aggregated provider price, taker the price after markups.
LQ The liquidity pool, its mode and boost, and the markup profile applied.
MARKUP The fixed markup layer (layer index, type, bid and ask markups, skew) and the flexible markup settings (type, minimum and maximum spread, execution mode, precision) that applied.
LOCK Trade lock settings, present when a trade lock applies to the order.
A-BOOK The a_min, a_step and a_delay settings of the connector account symbol.
B-BOOK The b_book, b_lock, b_bob, b_boost, b_delay and b_jitter settings of the connector account symbol.

bid_book and ask_book

ask_book   : <order>[_<leg>]: <pool>|<markup profile>: <layer>|<maker>|<raw price>[|<book price>]|<taker price>|<size>|<size>|<quote ref>|<time>|<age>, ...[: FILTER_BEST=<p>, FILTER_WORST=<p>, MARKUP_MIN=<p>, MARKUP_MAX=<p>, SPREAD_MIN=<p>, SPREAD_MAX=<p>, SPREAD_MODE=<mode>]
Field Explanation
<order>_<leg> Order and leg the book was captured for. Books written at order close carry the order ID only.
<pool>|<markup profile> Liquidity pool and markup profile the book was built from.
layer Position in the aggregated book; 0 is the top of book.
maker Liquidity Provider that streamed the layer.
raw price Price as received from the provider.
book price Price after the provider markups, shown only when it differs from the raw price.
taker price Price after all markups, as offered to the client.
size, size Size of the layer, followed by the size booked internally for B-book legs or the minimum size for A-book legs.
quote ref Quote reference received from the provider, n/a when the provider sends none.
time Time XCore received the quote, in epoch milliseconds.
age Milliseconds between the provider’s timestamp and the receipt of the quote in XCore.
suffix Filter best and worst prices, markup and spread limits and the spread mode, shown when they constrained this book.

leg_open

leg_open   : <order>_<leg>: <provider type>|<provider>: batch=<n> b_book=<0|1> acc=<account> clordid=<id> type=<MARKET|LIMIT|PQ> instrument=<provider instrument> size=<n> minsize=<n> price=<n> ttl=<ms> MARKUP[lp=<n>,fix=<n>,skew=<n>,flex=<n>] QUOTE[pos=<layer>,ref=<quote ref>,time=<ms>,age=<ms>]
Field Explanation
<order>_<leg> Order ID and leg ID.
<provider type>|<provider> Type and name of the Liquidity Provider.
batch Attempt number; a leg that is rejected is retried as a new batch.
b_book 1 for legs booked internally (B-book and cross-hedge legs), 0 for legs sent to a provider.
acc Account tag sent to the provider.
clordid Client order ID sent to the provider; by default <order>-<leg>, or SA-<order>-<leg> for Synthetic A-book legs.
type Leg type: market, limit or previously quoted (PQ).
instrument Symbol name on the provider side.
size, minsize, price, ttl Requested size, minimum fill size, requested price and the remaining time to live in milliseconds.
MARKUP Provider markup, fixed markup, skew and flexible markup applied to the leg. For sell orders the values are shown with the sign inverted.
QUOTE Position of the selected quote in the book, the provider’s quote reference, the time XCore received the quote (epoch milliseconds) and its age when the leg opened.

deal_done

deal_done  : <order>_<leg>_<deal>: size=<n> maker_price=<n> taker_price=<n> [ref_price=<n>] ordID=<provider order id> execID=<provider execution id> vd=<value date> [text=<provider text>] conv=<rate> MARKUP[flex=<n>,lock=<n>]
Field Explanation
<order>_<leg>_<deal> Order ID, leg ID and deal ID.
size Deal fill size.
maker_price Price confirmed by the provider.
taker_price Price after the provider, fixed, flexible and lock markups.
ref_price Reference price, shown when one applied.
ordID, execID Order ID and execution ID assigned by the provider.
vd Value date received from the provider.
text Execution message from the provider, shown when present.
conv Conversion rate to USD at the time of the deal.
MARKUP Flexible and lock markup components of the deal. For sell orders the values are shown with the sign inverted.

leg_close

leg_close  : <order>_<leg>: fillSize=<n> fillPrice=<provider price>|<client price>[: maker_slippage=<n> | maker_improvement=<n>] [taker_slippage=<n> | taker_improvement=<n>] [maker_trade_setting.rejectCount=<n>]
Field Explanation
fillSize Leg fill size, the sum of the confirmed deals.
fillPrice Fill price confirmed by the provider, followed by the price after markups.
maker_slippage / maker_improvement Difference between the requested leg price and the provider fill price, as an absolute price difference, shown when it is not zero.
taker_slippage / taker_improvement Difference between the requested order price (or the order-time price, when no price was requested) and the client fill price, shown when it is not zero.
maker_trade_setting.rejectCount Number of rejections recorded against the provider trade setting, shown when it is not zero.

order_close

Filled orders:

order_close: <order>: fillSize=<n> fillPrice=<raw>|<client price>[: slippage=<n> | improvement=<n>] [message=<text>] [exec=<details>] [taker_trade_setting.rejectCount=<n>]

Unfilled orders (WARN):

order_close: <order>: <connector type>|<connector>: account=<connector account> [margin=<n>] clOrdID=<id> [subid1=<v>] [subid2=<v>] [subid3=<v>] [subid4=<v>] side=<side> ordType=<type> [posType=<type>] instrument=<instrument> currency=<ccy> size=<n> minsize=<n> price=<n> deviation=<n> ttl=<ms> time=<ms>[: message=<reason>] [exec=<details>] [rejectCount=<n>]
Field Explanation
fillSize Order fill size reported to the client, the sum of the leg fill sizes.
fillPrice Volume-weighted fill price before and after markups.
slippage / improvement Difference between the requested price (or the order-time price) and the client fill price, shown when it is not zero.
message Execution message; for unfilled orders the rejection reason.
margin Margin value, shown when the order failed the margin check.
exec Execution details, when available.
rejectCount Number of consecutive rejections recorded against the taker trade setting, shown when it is not zero.

order_reject

order_reject: <order>: <connector type>|<connector>: account=<connector account> clOrdID=<id> [subID1=<v>] [subID2=<v>] [subID3=<v>] [subID4=<v>]: side=<side> type=<type> instrument=<instrument> symbol=<security type>|<symbol>|<size unit>|<price unit>[|<factor>] size=<requested>|<A-book>|<B-book> minsize=<n> price=<n>: <reason> [rejectCount=<n>]

The fields are those of order_open, followed by the rejection reason.

Example

A market order filled by one maker:

2026-09-23 12:48:01.487 [INFO ] order_open : 461: PRIMEXM_FIX44_V2|fix_taker: account=DEMO clOrdID=ORD-1001: side=BUY type=MARKET instrument=EURUSD symbol=FX|EURUSD|0.01|0.00001 size=1000.0|1000.0|0 minsize=0 price=0 dev=-1.0 ttl=5000 PRICE[bid[maker=1.10001,taker=1.10001],ask[maker=1.10049,taker=1.10049]] LQ[pool=DEMO,mode=sweep,boost=1,profile=DEMO] MARKUP[fix[layer=0,type=price_unit,bid=0,ask=0,skew=0],flex[type=price_unit,min=-1000000.0,max=1000000.0,exec=slip,precision=default]] A-BOOK[min=1.0,step=1.0,delay=0] B-BOOK[bbook=0.0,lock=0.0,bob=0.0,boost=1.0,delay=0,jitter=0]
2026-09-23 12:48:01.487 [INFO ] leg_open   : 461_0: PRIMEXM_FIX44|Maker_1: batch=0 b_book=0 acc=n/a clordid=461-0 type=MARKET instrument=EUR/USD size=1000.0 minsize=0 price=1.10049 ttl=60 MARKUP[lp=0,fix=0,skew=0,flex=0] QUOTE[pos=0,ref=n/a,time=1790167681486,age=1]
2026-09-23 12:48:01.487 [INFO ] ask_book   : 461_0: DEMO|DEMO: 0|Maker_1|1.10049|1.10049|500000.0|0|n/a|1790167681486|0, 1|Maker_1|1.10051|1.10051|1000000.0|0|n/a|1790167681486|0
2026-09-23 12:48:01.487 [INFO ] bid_book   : 461_0: DEMO|DEMO: 0|Maker_1|1.10001|1.10001|500000.0|0|n/a|1790167681486|0, 1|Maker_1|1.09999|1.09999|1000000.0|0|n/a|1790167681486|0
2026-09-23 12:48:01.487 [INFO ] deal_done  : 461_0_0: size=1000.0 maker_price=1.10047 taker_price=1.10047 ordID=MK-ORD-1 execID=MK-EXEC-1 vd=20260925 conv=1.10047 MARKUP[flex=0,lock=0]
2026-09-23 12:48:01.487 [INFO ] leg_close  : 461_0: fillSize=1000.0 fillPrice=1.10047|1.10047: maker_improvement=0.00002 taker_improvement=0.00002
2026-09-23 12:48:01.487 [INFO ] order_close: 461: fillSize=1000.0 fillPrice=1.10047|1.10047: improvement=0.00002