当前位置: 首页 > wzjs >正文

您的网站空间已过期弄一个公司官网要怎么弄

您的网站空间已过期,弄一个公司官网要怎么弄,胶州网站建设,成都高端网站建设公司文章目录 配置方式Hostname的来源${env:HOSTNAME} 解析机制Log4j2配置示例踩坑案例 更多相关内容可查看 业务背景:在已成型很多年的项目的基础上,进行日志改造,例如在程序中已经通过lg4j2打印了很多日志了,通过改每一条输出日志不…

在这里插入图片描述

文章目录

    • 配置方式
    • Hostname的来源
    • ${env:HOSTNAME} 解析机制
    • Log4j2配置示例
    • 踩坑案例

更多相关内容可查看

业务背景:在已成型很多年的项目的基础上,进行日志改造,例如在程序中已经通过lg4j2打印了很多日志了,通过改每一条输出日志不显示,可以通过插件挂载,动态读取的方式来改造日志

对log4j2日志不了解的可查看主页log4j2相关文章,此篇不做详细log4j2框架讲解

官网地址:https://www.docs4dev.com/docs/zh/log4j2/2.x/all/manual-index.html

配置方式

#全局配置
<Properties><Property name="HOSTNAME">${env:HOSTNAME}</Property>
</Properties>
#读取${HOSTNAME}部分就是读取的方式
fileName="${LOG_HOME}/proc-${LOG_VERSION}-${APP_Name}-${HOSTNAME}-1.log"

输出示例(这个node0406就是主机名):

在这里插入图片描述

Hostname的来源

大多数 Linux 发行版(如 CentOS、Ubuntu)会自动将主机名注入到 Shell 的环境变量中,可通过以下命令验证:

echo $HOSTNAME  # 直接输出主机名
env | grep HOSTNAME  # 查看所有环境变量中的HOSTNAME

主机名实际存储在 /etc/hostname 文件中,修改后需执行 hostnamectl set-hostname <新主机名> 生效。

${env:HOSTNAME} 解析机制

当配置文件(如 Properties 或 XML)中出现 ${env:XXX} 时,日志框架(如 Log4j2、Spring Boot)会按以下流程处理:

步骤 1:识别占位符

日志框架检测到 ${env:HOSTNAME} 格式时,识别为 环境变量引用,其中:

  • env 表示从系统环境变量中查找
  • HOSTNAME 是具体的变量名

步骤 2:环境变量查找

框架调用 System.getenv("HOSTNAME") 方法,从 Java 进程的环境变量中获取值。
(底层通过 JNI 调用 Linux 系统的 getenv() C 函数)

步骤 3:值替换

将 ${env:HOSTNAME} 替换为实际的主机名(如 ubuntu-server),最终生成日志内容。

在这里插入图片描述

Log4j2配置示例

<?xml version="1.0" encoding="UTF-8"?>
<!--status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。
-->
<Configuration status="WARN" monitorInterval="10" packages="com.server.util"><Properties><!-- 配置日志文件输出目录 --><Property name="LOG_HOME">/opt/log</Property><Property name="ARCHIVE_HOME">${LOG_HOME}/aaa</Property><Property name="APP_Name" value="sss"/><!-- 版本号属性 --><Property name="LOG_VERSION">v01</Property><!-- 主机号 --><Property name="HOSTNAME">xxx</Property><Property name="Pattern">[%d{yyyy-MM-dd HH:mm:ss.SSS}]|%level|${APP_Name}|%X{UUID}|%X{GlobalSeqNo}|%pid|%thread|%class{1.}:%line|%X{NestedLevel}|%msg%n</Property></Properties><Appenders><!--这个输出控制台的配置--><Console name="STDOUT" target="SYSTEM_OUT"><!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><!-- 输出日志的格式 --><PatternLayout pattern="${Pattern}"/></Console><RollingRandomAccessFile name="FILE"immediateFlush="true" fileName="${LOG_HOME}/proc-${xxx}-${APP_Name}-${HOSTNAME}-1.log"filePattern="${ARCHIVE_HOME}/proc-${xxx}-${APP_Name}-${HOSTNAME}-%d{yyyyMMdd}-%i.log.zip"></RollingRandomAccessFile></Appenders>

踩坑案例

问题 1:日志中未显示主机名

原因:环境变量 HOSTNAME 未被注入到 Java 进程

在启动脚本中显式导出变量:

 export HOSTNAME=$(hostname)java -jar your_app.jar

或在 Java 代码中硬编码:

System.setProperty("HOSTNAME", InetAddress.getLocalHost().getHostName());

问题 2:环境变量冲突

现象:${env:HOSTNAME} 返回空值

原因:某些容器化环境(如 Docker/K8s)可能覆盖了 HOSTNAME

# 在容器内执行
printenv HOSTNAME  # 查看实际值
hostname           # 查看系统真实主机名

问题 3:权限限制

场景:SELinux 或容器安全策略阻止读取环境变量

#解决:调整安全策略或改用文件读取:
String hostname = Files.readString(Path.of("/etc/hostname")).trim();
http://www.dtcms.com/wzjs/596122.html

相关文章:

  • 广西中小型营销型网站建设公司wordpress简单用户积分
  • 百度收录规则2022酒店seo是什么意思
  • 设计的有趣的网站推荐网站建设和原则
  • 网站开发保密协议 doc大型门户网站 代码
  • 做动态二维码的网站嘉兴哪家公司做网站比较好的
  • 织梦唯美网站源码seo还有未来吗
  • 有没有做博物馆的3d网站旅游网站建设的背景意义
  • 2019个人建设网站静态网页设计教程
  • 韶关网站seowordpress更换编辑器
  • 静安西安网站建设商务平台网站建设合同
  • 网站模板 jsp辽源市住房和城乡建设局网站
  • 如何网站做镜像wordpress comment_form_after
  • 不屏蔽网站的浏览器给网站做插画分辨率
  • 汽车低价网站建设sketch wordpress 主题
  • 免费网站做seo2018怎么做网站淘宝客
  • 凡科建站是放在哪个服务器上中国城乡建设结合部网站
  • 什么行业要做网站建设推广这些垂直网站 开源码
  • 网站后期维护和管理怎么做可信赖的南昌网站制作
  • 企业介绍微网站怎么做跨境电商平台规则
  • 建筑设计网站app北京12345微信公众号
  • 做一个网站推广个人门户网站建设流程
  • 台前网站建设费用青岛手工活外发加工网
  • 优秀网站首页设计济南seo网站推广公司
  • 吉安高端网站建设公司网站 建设意见
  • 做网站搞笑口号网店加盟
  • 网站排名点击邯郸做网站哪家好
  • 做网站有自己的服务器吗物流商 网站建设方案
  • 网站推广公司兴田德润电话多少wordpress文章图片本地化
  • 建设网站的推广的软文北京商场招商
  • wordpress主页显示关键词优化的策略