Java 日志转发 syslog

syslog 服务器配置 配置 rsyslog 配置文件/etc/rsyslog.conf rsyslog 服务端接收 作为日志聚合服务,接受客户端发送过来的日志 开启 UDP/TCP 接收: # Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514 配置日志接收规则: $template RemoteLogs,"/data/logs/%fromhost-ip%/%$YEAR%-%$MONTH%-%$DAY%.log" :fromhost-ip, !isequal, "127.0.0.1" ?RemoteLogs #& ~ rsyslog 客户端发送 rsyslog 也可以作为客户端向远程的 rsyslog 服务端转发日志 开启转发: # UDP转发 *.* @server_ip:514 # TCP转发 *.* @@server_ip:514 重启 rsyslog 服务 当 rsyslog 服务端或客户端配置完成后,重启服务使配置生效 systemctl restart rsyslog systemctl status rsyslog 配置支持 TLS 的 rsyslog 安装依赖包 配置支持 TLS 的 rsyslog 需要安装以下依赖包 yum install rsyslog-gnutls yum install rsyslog yum install gnutls-utils yum install gnutls 生成密钥与证书 # 生成根证书 certtool --generate-privkey --outfile ca-key.pem certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem # 生成服务端密钥与证书 certtool --generate-privkey --outfile rslserver-key.pem --bits 2048 certtool --generate-request --load-privkey rslserver-key.pem --outfile request.pem certtool --generate-certificate --load-request request.pem --outfile rslserver-cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem # 生成客户端密钥与证书 certtool --generate-privkey --outfile rslclient-key.pem --bits 2048 certtool --generate-request --load-privkey rslclient-key.pem --outfile request.pem certtool --generate-certificate --load-request request.pem --outfile rslclient-cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem 注意:输入证书信息时名字不要留空,不然后面 Java 中会报java.security.cert.CertificateParsingException: X.509 Certificate is incomplete: subject field is empty的错误 ...

October 20, 2021

Java

Java Install sudo apt-get update sudo apt install openjdk-11-jdk Hello world public class Test { public static void main(String[] args) { System.out.println("Hello world!"); } } 指定JDK版本 export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home" export PATH=$JAVA_HOME/bin:$PATH:. 编译与打包 运行class # 编译java文件 javac Test.java # 会生成 Test.class # 运行编译后文件 java Test # 运行 Test.class # 指定 classpath 运行 java -classpath yourClassPath Test java -cp yourClassPath Test java -cp .:yourClassPath:yourClassPath2 Test # 默认为当前目录,多个 path 用分号分割 分离源文件与编译后文件 mkdir src && mv *.java src/ javac -d ./classes src/*.java # -d 表示生成的class文件存放位置 cd ./classes java Test 包管理 # add package echo "package here.there\n"`cat Test.java` > Test.java # 首行写包路径 mkdir here && mkdir here/there && mv Test.java here/there/ # 安装包路径创建文件夹 javac -d ../classes here/there/Test.java cd ../classes java here.there.Test # 运行时要指定包路径 JAR打包与运行 Working with Manifest Files: The Basics ...

January 1, 2000

JVM

JVM 概念 内存空间 程序计数器 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 垃圾回收 算法 引用计数法 可达性分析法 分配回收策略 Young Old 回收器 When to choose SerialGC, ParallelGC over CMS, G1 in Java? Serial:Mainly for single-cpu machine. Parallel:It uses multiple gc threads to handle heap, and perform stop-the-world pause during any gc. CMS:It’s designed to eliminate the long pause associated with the full gc of parallel & serial collector. G1:It’s low pause / server style gc, mainly for large heap (> 4Gb). ...

January 1, 2000

Maven

Maven Install Maven Ubuntu sudo apt install maven Manually 下载Binary tar.gz archive文件 安装 mkdir ~/.java cd ~/.java tar zxvf apache-maven-3.5.4-bin.tar.gz vi ~/.bash_profile export MAVEN_HOME=/Users/yizhenchen/.java/apache-maven-3.5.4 export M2_HOME=$MAVEN_HOME export PATH=$PATH:$MAVEN_HOME/bin source ~/.bash_profile 检查是否安装成功 mvn -v echo $M2_HOME 首次运行完mvn后会在"~“目录下创建”.m2"文件夹,作为本地仓库 配置Maven 修改配置文件 $MAVEN_HOME/conf/settings.xml ~/.m2/settings.xml 使用Maven 在项目中添加pom.xml文件 groupId: 一般为package名 artifactId: 一般为项目名 version: 版本 目录结构: Project pom.xml src main java resources test java resources target <groupId>here.there</groupId> <artifactId>MavenTest</artifactId> <version>1.0</version> 命令 clean:清空target目录 complie:编译工程 package:执行打包 install:发布到仓库 运行 ...

January 1, 2000