我为nodejs编写了这个模块,可用于从任何地方通过sockjs向客户端分发事件.
现在我想包括一些可配置的日志记录机制.
目前,我正在添加winston作为依赖项,要求它作为每个类中的记录器并使用logger.error,logger.warn,...
#logger.js
var logger = require('winston');
module.exports=logger;
Run Code Online (Sandbox Code Playgroud)
和
#myClass
var logger = require("./logger");
logger.error("Something went wrong")
Run Code Online (Sandbox Code Playgroud)
现在,如何让记录器可以被自定义记录器替换,或者让用户从OUTSIDE my module配置日志级别?
他们当然不必触摸模块代码来更改记录器,但能够使用loglevel创建记录器,我的模块应该使用它(如果可用).
有关如何做到这一点的任何推荐?
或者是对"winston"的硬依赖,并且可以通过npm-config配置日志级别吗?
据我从阅读 mongodb 文档以及使用索引、查询和监控结果中了解到,我对 mongodb 中地理位置查询工作方式的理解如下:
number_limit
或distance_limit
为了展示我们正在尝试做的事情:让我们以 mongodb 教程示例为基础:https : //docs.mongodb.com/manual/tutorial/geospatial-tutorial/
假设我们有一个餐厅列表,上面有位置和更多信息,例如established_at
, type
(chinese, thai, italian, ...), priceOfACoke
, numberOfWaiters
, wheelchairAccess
, ...
假设您要查询 A 的美国所有餐厅的集合,以返回所有 2-5 年前成立的靠近匹兹堡市中心的意大利餐厅,这些餐厅有轮椅通道和 50 多个服务员,其中一个可乐比1美元便宜。
这是一个带有限制性附加条件且没有距离限制的地理查询;并且由于“服务员> 50 比 1 美元便宜的可乐”过滤掉了大部分/所有结果,这个查询似乎贯穿整个集合并且需要很长时间。
如果在没有“geoNear”的情况下运行,假设有相关字段的组合索引,则此查询非常快,即使 100 万个文档中只有 10 个结果。
然而,一geoNear
上场,表现就惨不忍睹
据我了解,每个集合只能有一个地理索引,并且地理索引中只能有一个附加属性,因此没有太多工作可以帮助 mongodb 找到具有多个标准的结果,因为似乎没有使用传统索引. 此外,在使用聚合时,geo 必须是第一个过滤器......
是否有任何提示或指示可以加快这样的查询速度?
如果可能,我不希望得到“使用 ElasticSearch”或“使用多个集合”的响应——我仍然希望有另一种方法可以帮助 mongodb 在开始执行 geoNear 部分之前减少要检查的文档数量。
在使用Ansible的lineinfile
模块添加多个挂载点后/etc/fstab
,我想运行一个简单的方法mount -a
来实现它们.
它可以使用
- name: mount all
command: mount -a
become: true
Run Code Online (Sandbox Code Playgroud)
但是,ansible坚持建议使用该mount
模块
[WARNING]: Consider using mount module rather than running mount
Run Code Online (Sandbox Code Playgroud)
但据我所知,没有简单的选择.
我错过了什么吗?
ansible ×1
geolocation ×1
logging ×1
meteor ×1
mongodb ×1
node.js ×1
performance ×1
winston ×1