我知道对于最新的 docker compose,我们可以指定基于每个服务的日志记录。例如:-
version: '2'
services:
Sachin:
image: hike/ubuntu:14.04
volumes:
- .:/testDocker
working_dir: /testDocker
logging:
driver: "json-file"
options:
max-size: "25m"
max-file: "2"
command: python -u test.py
我的撰写文件中有大量容器。我可以为 docker 守护进程本身指定日志记录配置。我只是想知道是否可以在全局级别为 docker compose 文件指定日志记录配置。像这样的
version: '2'
services:
Sachin:
image: hike/ubuntu:14.04
volumes:
- .:/testDocker
working_dir: /testDocker
logging:
driver: "json-file"
options:
max-size: "25m"
max-file: "2"
command: python -u test.py
最佳答案
您还可以为此配置 Docker 默认值,您的所有容器都将具有该配置(您可以覆盖每个容器)。
这里是使用 YAML anchor 的解决方案示例:
version: "2"
services:
proxy:
build: proxy
image: kinoulink/proxy
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
container_name: ktv_manager_proxy
environment:
- HTTP_AUTH_PASSWORD=$KTV_MANAGER_PASSWORD
logging: &logging
driver: "awslogs"
options:
awslogs-region: eu-west-1
awslogs-group: docker
rancher:
image: rancher/server:v1.1.3
volumes:
- rancher_mysql:/var/lib/mysql
- rancher_cattle:/var/lib/cattle
labels:
ktv.infra.proxy.domain: 'rancher'
ktv.infra.proxy.port: '8080'
logging:
<<: *logging
从 v3.4 开始(正如@tekHedd 所说),您可以使用“扩展字段”语法:
version: "3.4"
x-logging:
&default-logging
driver: "awslogs"
options:
awslogs-region: eu-west-1
awslogs-group: docker
services:
proxy:
build: proxy
image: kinoulink/proxy
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
container_name: ktv_manager_proxy
environment:
- HTTP_AUTH_PASSWORD=$KTV_MANAGER_PASSWORD
logging: *default-logging
rancher:
image: rancher/server:v1.1.3
volumes:
- rancher_mysql:/var/lib/mysql
- rancher_cattle:/var/lib/cattle
labels:
ktv.infra.proxy.domain: 'rancher'
ktv.infra.proxy.port: '8080'
logging: *default-logging
关于Docker 撰写全局级别的日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567355/
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我正在尝试将以下SQL查询转换为ActiveRecord,它正在融化我的大脑。deletefromtablewhereid有什么想法吗?我想做的是限制表中的行数。所以,我想删除少于最近10个条目的所有内容。编辑:通过结合以下几个答案找到了解决方案。Temperature.where('id这给我留下了最新的10个条目。 最佳答案 从您的SQL来看,您似乎想要从表中删除前10条记录。我相信到目前为止的大多数答案都会如此。这里有两个额外的选择:基于MurifoX的版本:Table.where(:id=>Table.order(:id).
我目前正在用Ruby编写一个项目,它使用ActiveRecordgem进行数据库交互,我正在尝试使用ActiveRecord::Base.logger记录所有数据库事件具有以下代码的属性ActiveRecord::Base.logger=Logger.new(File.open('logs/database.log','a'))这适用于迁移等(出于某种原因似乎需要启用日志记录,因为它在禁用时会出现NilClass错误)但是当我尝试运行包含调用ActiveRecord对象的线程守护程序的项目时脚本失败并出现以下错误/System/Library/Frameworks/Ruby.frame
我有一个应用需要发送用户事件邀请。当用户邀请friend(用户)参加事件时,如果尚不存在将用户连接到该事件的新记录,则会创建该记录。我的模型由用户、事件和events_user组成。classEventdefinvite(user_id,*args)user_id.eachdo|u|e=EventsUser.find_or_create_by_event_id_and_user_id(self.id,u)e.save!endendend用法Event.first.invite([1,2,3])我不认为以上是完成我的任务的最有效方法。我设想了一种方法,例如Model.find_or_cr
我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho
我正在尝试将$stdout设置为临时写入一个文件,然后返回到一个文件。test.rb:old_stdout=$stdout$stdout.reopen("mytestfile.out",'w+')puts"thisgoesinmytestfile"$stdout=old_stdoutputs"thisshouldbeontheconsole"$stdout.reopen("mytestfile1.out",'w+')puts"thisgoesinmytestfile1:"$stdout=old_stdoutputs"thisshouldbebackontheconsole"这是输出。r
在许多ruby类之间共享记录器实例的最佳(正确)方法是什么?现在我只是将记录器创建为全局$logger=Logger.new变量,但我觉得有更好的方法可以在不使用全局变量的情况下执行此操作。如果我有以下内容:moduleFooclassAclassBclassC...classZend在所有类之间共享记录器实例的最佳方式是什么?我是以某种方式在Foo模块中声明/创建记录器还是只是使用全局$logger没问题? 最佳答案 在模块中添加常量:moduleFooLogger=Logger.newclassAclassBclassC..