一:docker安装好mongodb
第一步:docker安装好mongodb
[root@iZbp1gp1t778obaz5m8vk8Z /]# docker search mongo [root@iZbp1gp1t778obaz5m8vk8Z /]# docker pull mongo:latest Trying to pull repository docker.io/library/mongo ... latest: Pulling from docker.io/library/mongo f22ccc0b8772: Pull complete 3cf8fb62ba5f: Pull complete e80c964ece6a: Pull complete 329e632c35b3: Pull complete 3e1bd1325a3d: Pull complete 4aa6e3d64a4a: Pull complete 035bca87b778: Pull complete 874e4e43cb00: Pull complete 08cb97662b8b: Pull complete f623ce2ba1e1: Pull complete f100ac278196: Pull complete 6f5539f9b3ee: Pull complete Digest: sha256:02e9941ddcb949424fa4eb01f9d235da91a5b7b64feb5887eab77e1ef84a3bad Status: Downloaded newer image for docker.io/mongo:latest [root@iZbp1gp1t778obaz5m8vk8Z /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/mongo latest 3068f6bb852e 5 days ago 493 MB 指定版本安装,建议不要安装最新的,很坑爹,我喜欢这个版本 [root@iZbp1gp1t778obaz5m8vk8Z ~]$ docker pull mongo:4.2.1
第二步:启动docker中的mongodb
[root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker run -itd --name mongo --restart=on-failure:10 -d -m 1G --memory-swap 4G -p 27017:27017 -v /data/mongodb:/data/db mongo 1bcf117db0a8e86840a1acac769338053e8dff25a41bd1488d7a274ea171371a [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1bcf117db0a8 mongo "docker-entrypoint..." 7 seconds ago Up 7 seconds 0.0.0.0:27017->27017/tcp mongo 此处我们设置为非登录可见 新docker人请参考前期文章知晓参数,启动完成后。咱们开始整账户
这个是4.2.1 版本的启动 [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker run -itd --name mongo --restart=on-failure:10 -d -m 1G --memory-swap 4G -p 27017:27017 -v /data/mongodb:/data/db mongo:4.2.1 --auth [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1bcf117db0a8 mongo "docker-entrypoint..." 7 seconds ago Up 7 seconds 0.0.0.0:27017->27017/tcp mongo 此处我们设置为非登录可见 新docker人请参考前期文章知晓参数,启动完成后。咱们开始整账户
《docker常见参数操作方法》
第三步:mongodb 配置好用户信息
为MongoDb创建账户信息 [root@iZbp1gp1t778obaz5m8vk8Z mongodb]# docker exec -it mongo mongo admin MongoDB shell version v4.4.2 connecting to: mongodb://127.0.0.1:27017/admin"id" : UUID("a2d4a27c-a9dc-4af4-90cb-233e41394d51") } MongoDB server version: 4.4.2 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see https://docs.mongodb.com/ Questions"user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } > db.auth('admin', '123456') 1 > db.grantRolesToUser("admin", [ { role: "readWrite", db: "admin" } ])
为MongoDb创建账户信息,如果你不需要验证可以不跑这一段,但是生产环境可不要这么干 # 连接至docker中的命令操作界面 [root@izwz99z5o9dc90keftqhlrz ~]# docker exec -it mongo mongo admin # 创建一个名为 admin,密码为 123456的用户。 > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]}); # 尝试使用上面创建的用户信息进行连接。 > db.auth('admin', '123456') # 给admin授权、读写权限 > db.grantRolesToUser("admin", [ { role: "readWrite", db: "admin" } ]) 上面是第一次进入的时候
第二次进入时,就要守规矩了.一定要先进guides 数据库,再添加用户,否则不知道你添加到哪里去了 > use guides #或者直接创建时给所有者权限 > db.createUser({user:"guides",pwd:"123456",roles:[{role:"dbOwner",db:"guides"}]}) #连接到此账户 > db.auth('guides','123456') #用此账户、写入一条数据到guides数据库-这个文档 > db.guides.insert({"name":"liuxing", "age":31})
二:springboot采集日志至mongodb
采集日志就特别粗旷了
第一步:pom.xml添加配置
<!-- mongodb数据库操作 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
第二步:application.yml 配置好连接
#告诉Spring Boot应该在何处mongodb,没开验证 --auth 不需要输入用户名和密码,记住 spring data: mongodb: host: 47.110.57.115 port: 27017 authentication-database: guides database: guides username: guides password: '123456' max-connection-idle-time: 1000 max-connection-per-host: 200 max-wait-time: 60000 max-connection-life-time: 0 connect-timeout: 1000 socket-timeout: 2000 4.0以上authentication-database: 不要再写admin了,或者说4.2.1 authentication-database: guides
第三步:AOP切片日志获取
package com.zhx.guides.assistant.dto; import com.zhx.guides.assistant.util.object.TimeHelper; import java.io.Serializable; import java.util.Date; /** * @Date 创建时间: 2020-12-17 14:33 * @Author 作者姓名: Liux * @Version 1.0 * @Copyright Copyright by * @Direction 类说明 */ public class HttpRequestLog implements Serializable { public final static String collectName = "guides" ; private String url ; private String httpMethod ; private String className ; private String methodName ; private String ip ; private String requestParam ; private Date nowTime = TimeHelper.getCurrentDate() ; .... get set 省略 }
package com.zhx.guides.assistant.web.aspect; import com.alibaba.fastjson.JSONObject; import com.zhx.guides.assistant.dto.HttpRequestLog; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /** * @Class WebLogAspect * @Version 1.0 * @Date 创建时间:2020-03-03 10:05 * @Copyright Copyright by company * @Direction 类说明 */ @Aspect @Component public class WebLogAspect { @Autowired private MongoTemplate mongoTemplate; private final static Logger logger = LoggerFactory.getLogger(WebLogAspect.class); /** 以 controller 包下定义的所有请求为切入点 */ @Pointcut("execution(public * com.zhx.guides.assistant.interfaces.controller..*.*(..))") public void webLog() {} /** * 在切点之前织入 * @param joinPoint * @throws Throwable */ @Before("webLog()") public void doBefore(JoinPoint joinPoint) throws Throwable { // 开始打印请求日志 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); HttpRequestLog httpRequestLog = new HttpRequestLog() ; httpRequestLog.setUrl( request.getRequestURL().toString() ); httpRequestLog.setHttpMethod( request.getMethod() ); httpRequestLog.setClassName( joinPoint.getSignature().getDeclaringTypeName() ); httpRequestLog.setMethodName( joinPoint.getSignature().getName()); httpRequestLog.setIp( request.getRemoteAddr() ); // 打印请求相关参数 logger.info("======================= Start ======================"); // 打印请求 url logger.info("URL : {}", httpRequestLog.getUrl() ); // 打印 Http method logger.info("HTTP Method : {}", httpRequestLog.getHttpMethod() ); // 打印调用 controller 的全路径以及执行方法 logger.info("Class Method : {}.{}", httpRequestLog.getClassName() , httpRequestLog.getMethodName()); // 打印请求的 IP logger.info("IP : {}", httpRequestLog.getIp() ); // 打印请求入参 try { Object requestParam = joinPoint.getArgs(); httpRequestLog.setRequestParam( JSONObject.toJSONString(requestParam) ); logger.info("参数 : {}", httpRequestLog.getRequestParam() ); }catch (Exception e){ logger.info("参数打印失败,异常: {}", e.getMessage() ); }finally { httpRequestLog.setClassName( null ); try{mongoTemplate.save( httpRequestLog , HttpRequestLog.collectName );}catch (Exception e){} } } /** * 在切点之后织入 * @throws Throwable */ @After("webLog()") public void doAfter() throws Throwable { logger.info("======================= End ======================"); } /** * 环绕 * @param proceedingJoinPoint * @return * @throws Throwable */ @Around("webLog()") public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { long startTime = System.currentTimeMillis(); Object result = proceedingJoinPoint.proceed(); // 打印出参 logger.info("返回值 : {}", JSONObject.toJSONString(result)); // 执行耗时 logger.info("耗时 : {} ms", System.currentTimeMillis() - startTime); return result; } }
package com.zhx.guides.assistant.util.object; import org.apache.commons.lang.StringUtils; import java.util.Date; /** * @Class TimeHelper * @Version 1.0 * @Date 创建时间:2018/12/21 09:26 * @Copyright Copyright by * @Direction 类说明 */ public class TimeHelper { /** *当前时间 * @return */ public static Date getCurrentDate(){ Calendar calendar = Calendar.getInstance(); return calendar.getTime(); } }
三:看看存储日志的效果
备注:请注意使用的mongodb版本:4.2.1 依次配置使用即可
如果你使用的最新版本,有可能发生各种 权限不能通过的问题,那么请切换至4.2.1稳定版本,用最新版本有点当小白鼠的感觉。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“Docker mongoDB 4.2.1 安装并收集springboot日志的步骤详解”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年12月22日
2024年12月22日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]