项目启动时增加日志与系统配置

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

web.xml中增加Servletlog4j

<servlet>

       <servlet-name>log4j</servlet-name>

       <servlet-class>com.wafer.weixin.servlet.Log4JServlet</servlet-class>

       <load-on-startup>1</load-on-startup>//加载该servlet1代表优先级

    </servlet>

    <servlet-mapping>

       <servlet-name>log4j</servlet-name>

       <url-pattern>/log4j</url-pattern>

</servlet-mapping>

Log4JServlet

package com.wafer.weixin.servlet;

 

import java.text.SimpleDateFormat;

import java.util.Date;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import java.io.BufferedInputStream;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

import org.apache.log4j.PropertyConfigurator;

 

import com.wafer.weixin.util.MessageUtil;

import com.wafer.weixin.util.SignUtil;

import com.wafer.weixin.util.WeixinUtil;

 

public class Log4JServlet extends HttpServlet{

//增加日志

public static org.apache.log4j.Logger log=org.apache.log4j.Logger.getLogger(Log4JServlet.class.getName());

    public void init() throws ServletException{

    Date d=new Date();

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String date=df.format(d);

 log.info("开始加载日志配置....");

         String path = getServletContext().getRealPath("/");

 

         String filename = path+"WEB-INF\\log4j.properties";

         PropertyConfigurator.configure(filename);

         log.info("日志配置加载完成....");

         log.info("日志配置地址:"+filename);

//增加系统配置

         String name="config\\system_config.propertys";

         InputStream in;

try {

Properties p = new Properties();

in = new BufferedInputStream(new FileInputStream(path+name));

 log.info("系统配置路径1"+path+name);

p.load(in);

SignUtil.token=p.getProperty("token");

WeixinUtil.appId=p.getProperty("appId");

WeixinUtil.appSecret=p.getProperty("appSecret");

MessageUtil.cache=p.getProperty("cache");

MessageUtil.INTER_FACE_HOST=p.getProperty("INTER_FACE_HOST");

MessageUtil.WEIXIN_HOST=p.getProperty("WEIXIN_HOST");

MessageUtil.toUserName=p.getProperty("toUserName");

log.info(SignUtil.token);

log.info(WeixinUtil.appId);

log.info(WeixinUtil.appSecret);

log.info(MessageUtil.cache);

log.info(MessageUtil.INTER_FACE_HOST);

log.info(MessageUtil.WEIXIN_HOST);

log.info(MessageUtil.toUserName);

catch (FileNotFoundException e) {

e.printStackTrace();

catch (IOException e) {

e.printStackTrace();

}

    }

}

system_config.propertys

token=wafersystems

appId=wx6696dd322fae2a1e

appSecret=685ab9909e609da53464bac801bb08e6

cache=D:\\tomcat\\apache-tomcat-7.0.53\\webapps\\Weixin

WEIXIN_HOST=http://tianjian115.xicp.net

INTER_FACE_HOST=http://smartoffice.wafersystems.com

toUserName=gh_31bc4c1cddb8

#cache=D:\\WSE\\Weixin\\WebContent

log4j.properties

log4j.configuration=log4j.properties

log4j.rootCategory =debug,CONSOLE,FILE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Threshold=ERROR

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.CONSOLE.layout.ConversionPattern=%-4d [%t] %-5p %c %x - %m%n

log4j.appender.debug = org.apache.log4j.FileAppender

log4j.appender.debug.Threshold = ERROR

log4j.appender.debug.file = d:/debug.log

log4j.appender.debug.layout=org.apache.log4j.PatternLayout

log4j.appender.debug.layout.ConversionPattern=%-4d [%t] %-5p %c %x - %m%n

log4j.logger.com.opensymphony=ERROR

log4j.logger.org.apache.struts2=ERROR

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender

log4j.appender.FILE.File=C\:/SmartOfficeLogs/WX.log

log4j.appender.FILE.Append=false

log4j.appender.FILE.Encoding=utf-8

log4j.appender.FILE.Threshold=info

log4j.appender.FILE.BufferedIO=false

#Buffer单位为字节,默认是8K 现在为 32k缓冲

log4j.appender.FILE.BufferSize=8192

log4j.appender.FILE.layout=org.apache.log4j.PatternLayout

log4j.appender.FILE.layout.ConversionPattern=%-4d [%t] %-5p %c %x - %m%n

 

      本文转自tianjian_0913 51CTO博客,原文链接:http://blog.51cto.com/tianjian/1665991,如需转载请自行联系原作者







相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
WGLOG日志管理系统是怎么收集日志的
WGLOG通过部署Agent客户端采集日志,Agent持续收集指定日志文件并上报Server,Server负责展示与分析。Agent与Server需保持相同版本。官网下载地址:www.wgstart.com
|
3月前
|
监控 API 开发工具
HarmonyOS Next的HiLog日志系统完全指南:从入门到精通
本文深入解析HarmonyOS Next的HiLog日志系统,涵盖日志级别、核心API、隐私保护与高级回调功能,助你从入门到精通掌握这一重要开发工具。
136 1
|
6月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
607 0
|
6月前
|
SQL Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— application.yml 中对日志的配置
在 Spring Boot 项目中,`application.yml` 文件用于配置日志。通过 `logging.config` 指定日志配置文件(如 `logback.xml`),实现日志详细设置。`logging.level` 可定义包的日志输出级别,例如将 `com.itcodai.course03.dao` 包设为 `trace` 级别,便于开发时查看 SQL 操作。日志级别从高到低为 ERROR、WARN、INFO、DEBUG,生产环境建议调整为较高级别以减少日志量。本课程采用 yml 格式,因其层次清晰,但需注意格式要求。
522 0
|
2月前
|
JSON 安全 Go
Go语言项目工程化 —— 日志、配置、错误处理规范
本章详解Go语言项目工程化核心规范,涵盖日志、配置与错误处理三大关键领域。在日志方面,强调其在问题排查、性能优化和安全审计中的作用,推荐使用高性能结构化日志库zap,并介绍日志级别与结构化输出的最佳实践。配置管理部分讨论了配置分离的必要性,对比多种配置格式如JSON、YAML及环境变量,并提供viper库实现多环境配置的示例。错误处理部分阐述Go语言显式返回error的设计哲学,讲解标准处理方式、自定义错误类型、错误封装与堆栈追踪技巧,并提出按调用层级进行错误处理的建议。最后,总结各模块的工程化最佳实践,助力构建可维护、可观测且健壮的Go应用。
|
2月前
|
存储
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://www.wgstart.com/wglog/docs9.html
|
4月前
|
Java 应用服务中间件 Linux
Tomcat运行日志字符错乱/项目启动时控制台日志乱码问题
总结: 通过以上几种方法,概括如下:指定编码格式、设置JVM的文件编码、修改控制台输出编码、修正JSP页面编码和设置过滤器。遵循这些步骤,你可以依次排查和解决Tomcat运行日志字符错乱及项目启动时控制台日志乱码问题。希望这些建议能对你的问题提供有效的解决方案。
737 16
|
7月前
|
存储 前端开发 数据可视化
Grafana Loki,轻量级日志系统
本文介绍了基于Grafana、Loki和Alloy构建的轻量级日志系统。Loki是一个由Grafana Labs开发的日志聚合系统,具备高可用性和多租户支持,专注于日志而非指标,通过标签索引而非内容索引实现高效存储。Alloy则是用于收集和转发日志至Loki的强大工具。文章详细描述了系统的架构、组件及其工作流程,并提供了快速搭建指南,包括准备步骤、部署命令及验证方法。此外,还展示了如何使用Grafana查看日志,以及一些基本的LogQL查询示例。最后,作者探讨了Loki架构的独特之处,提出了“巨型单体模块化”的概念,即一个应用既可单体部署也可分布式部署,整体协同实现全部功能。
2264 70
Grafana Loki,轻量级日志系统
|
5月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
149 23
|
6月前
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
240 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统