SpringBoot運維學習筆記

燕子去了發表於2024-04-01

打包與執行

windows打包與執行

windows打包與執行,linux程式執行

服務啟動失敗:沒有主清單屬性【沒有打包外掛】

打包外掛的作用:https://www.bilibili.com/video/BV15b4y1a7yG?p=55

mvn package

maven打包的時候會執行測試的流程,執行test裡面的程式碼,會導致資料有一些變化;

打包外掛:打出一個可以獨立執行的jar包;

  1. 所有程式放在classes,所有依賴放在lib,再打一個org工具包,用於獨立執行boot工程,裡面提供boot的類載入器
  2. 支援執行的核心是MANIFEST.MF檔案,裡面包含
  3. 主啟動類Main-Class: org.springframework.boot.loader.JarLauncher【jar啟動器】
  4. 主啟動類找啟動類Start-Class:com.lmcool.xxxApplication
Windows產看埠占用
netstat -ano                      # 查詢埠
netstat -ano | findstr "埠號"    # 查詢端指定口
tasklist | findstr "程序PID號"  	# 根據程序PID查詢程序名稱
taskkill -F -PID "程序PID號"		# 根據PID殺死任務
taskkill -f -t -im "程序名稱"	    # 根據程序名稱殺死任務
Linux執行SpringBoot

centOS7

cd /usr/local
mkdir app
cd app
# 傳入jar包,注意java版本對應
java -version
java -jar app.jar

後臺啟動

nohub java -jar app.jar > server.log 2>&1 &
# 檢視pid
ps -ef | grep "java-jar"
kill -9 pid

檢視日誌

cd app
cat server.log

日誌

日誌基礎

作用

  • 程式設計期除錯程式碼
  • 運營期記錄資訊
    • 記錄日常運營重要資訊(峰值流量、平均響應時長···.··)
    • 記錄應用報錯資訊 (錯誤堆疊)
    • 記錄運維過程資料(擴容、當機、報警......)

級別:tarce(堆疊資訊)debug(除錯用),info(執行資訊),warn(警告類資訊),error(報錯資訊),fatal(災難)

建立記錄日誌的的物件

方式1

@RestController
@RequestMapping("/books")
public class BookController {
    private static final Logger log = LoggerFactory.getLogger(Bookcontroller.class);
    @GetMapping
    public string getById(){
        System.out.println("springboot is running...2");
        Log.debug("debug...");
        log.info("info...");
        Log.warn("warn...");
        log.error("error...");
        return "springboot is running...2";
    }
}

方式2:建立一個類,讓其他的類繼承他

public class BaseClass{
    private Class clazz;
    public static Logger log;
    public BaseClass(){
        clazz = this.getClass();
        log = LoggerFactory.getLogger(clazz);
    }
}

方式3:lombok

@Slf4j
@RestController
@RequestMapping("/books")
public class BookController {

    @GetMapping
    public string getById(){
        System.out.println("springboot is running...2");
        Log.debug("debug...");
        log.info("info...");
        Log.warn("warn...");
        log.error("error...");
        return "springboot is running...2";
    }
}
日誌配置

配置方式1

啟動的時候加--debug

配置方式2

debug: true

配置方式3

# 推薦
logging:
	# 設定分組
	group: 
		ebank: com.lmcool.controller,com.lmcool.dao,com.lmcool.service
	level:
		root: debug
		# 設定某個包
		com.lmcool.controller: info
		# 對分組設定日誌級別
		ebank: warn
日誌輸出格式控制

時間 級別 pid 所屬執行緒 所屬類/介面名 日誌資訊

PID:程序ID,用於表明當前操作所處的程序,當多服務同時記錄日誌時,該值可用於協助程式設計師除錯程式

所屬類/介面名:當前顯示資訊為SpringBoot重寫後的資訊,名稱過長時,簡化包名書寫為首字母,甚至直接刪除

2021-11-02 12:25:39.392 INFO 2336 --- [     main] com.itheima.springboot1@LogApplication : starting Springboot10LogApplication using Java 1.8.0 172 or
2021-11-02 12:25:39.395 INFO 2336 --- [     main] com.itheima.springboot1eLogApplication : No active profile set,falling back to default profiles: de
...
設定日誌模版格式與檔案記錄日誌
logging:
  pattern:
    console: "%d - %m%n" # 日期 訊息 換行

時間 彩色(級別5位) pid不可被重寫 執行緒號16位 %類名(-40 左對齊 .40 內容擷取){青色} : 日誌資訊 : 換行

檔案記錄日誌

日誌名:%i是第幾個

logging:
  pattern:
    console: "%d %clr(%5p) --- [%16t] %clr(%-40.40c){cyan} : %m %n"
  file:
    name: server.log
  logback:
    rollingpolicy:
      max-file-size: 10mb
      file-name-pattern: server.%d{yyyy0MM-dd}.%i.log

相關文章