来自LogicalThreadContext
文档:
逻辑线程上下文具有属性映射和堆栈。该 属性和堆栈可以包含在日志消息的输出中。 PatternLayout支持选择和输出这些属性。
但%x
模式不会从LogicalThreadContext.Stacks["LDC"]
输出任何内容。我无法在docs中找到任何模式来输出它。
如何将其包含在日志中?
答案 0 :(得分:1)
您可以使用
包装代码AddressPicker.prototype.initMap = function() {
var markerOptions, _ref, _ref1;
if ((_ref = this.options) != null ? (_ref1 = _ref.map) != null ? _ref1.gmap : void 0 : void 0) {
this.map = this.options.map.gmap;
} else {
this.mapOptions = $.extend({
zoom: 3,
center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP,
boundsForLocation: this.updateBoundsForPlace
}, this.options.map);
this.map = new google.maps.Map($(this.mapOptions.id)[0], this.mapOptions);
}
this.lastResult = null;
markerOptions = $.extend({
draggable: true,
visible: false,
position: this.map.getCenter(),
map: this.map
}, this.options.marker || {});
this.marker = new google.maps.Marker(markerOptions);
if (markerOptions.draggable) {
return google.maps.event.addListener(this.marker, 'dragend', this.markerDragged);
}
};
AddressPicker.prototype.updateMap = function(event, place) {
if (this.options.placeDetails) {
return this.placeService.getDetails(place, (function(_this) {
return function(response) {
var _ref;
_this.lastResult = new AddressPickerResult(response);
if (_this.marker) {
_this.marker.setPosition(response.geometry.location);
_this.marker.setVisible(true);
}
if (_this.map) {
if ((_ref = _this.mapOptions) != null) {
_ref.boundsForLocation(response);
}
}
return $(_this).trigger('addresspicker:selected', _this.lastResult);
};
})(this));
} else {
return $(this).trigger('addresspicker:selected', place);
}
};
AddressPicker.prototype.updateBoundsForPlace = function(response) {
if (response.geometry.viewport) {
return this.map.fitBounds(response.geometry.viewport);
} else {
this.map.setCenter(response.geometry.location);
return this.map.setZoom(this.options.zoomForLocation);
}
};
并将其添加到您的模式中
using (log4net.ThreadContext.Stacks["stackName"].Push("Text you want to stack"))
{
[your code]
}
例如如果您有多个级别,则可以为堆栈使用相同的名称:
(%property{stackName})
使用类似
的模式using (log4net.ThreadContext.Stacks["SN"].Push("level 1"))
{
using (log4net.ThreadContext.Stacks["SN"].Push("level 2"))
{
log.Debug("Log Text");
}
}
会输出类似
的内容(%property{SN}) [%message]
如果您想了解更多信息,可以查看Jim Christopher's blog