Điểm:0

Mở rộng biến trong yêu cầu tệp nhật ký Apache2 dựa trên

lá cờ br

Tôi muốn có tệp nhật ký tùy chỉnh cho mọi người dùng truy cập máy chủ ảo. Tên người dùng có trong biến môi trường "SSL_CLIENT_S_DN_CN" (đến từ xác thực chứng chỉ ứng dụng khách). Vì vậy, đầu tiên tôi đã thử một cái gì đó như

 Nhật ký tùy chỉnh /var/log/apache2/by_user/%{SSL_CLIENT_S_DN_CN}x.log \
      "%t %h %{SSL_CLIENT_S_DN_CN}x %{SSL_PROTOCOL}x %{SSL_CIPHER}x %H \"%r\" %b"

rõ ràng là không hoạt động vì mô-đun nhật ký không tự mở rộng biến trong đường dẫn tệp.

vấn đề của tôi là tương tự như cái này đây, nhưng tôi cần thay thế dựa trên yêu cầu, không chỉ một lần khi Apache tải cấu hình trang web.

mod_macro dường như chỉ thực hiện mở rộng một lần khi cấu hình được tải, vì vậy phương pháp này không giải quyết được sự cố của tôi.

Tôi cũng đã thử tạo nhật ký trong tập lệnh bên ngoài (logtest) bằng tính năng "ống nhật ký", nhưng điều này dẫn đến "lỗi trong mệnh đề điều kiện":

CustomLog "|/usr/local/bin/logtest" "/var/log/apache2/by_user/%{SSL_CLIENT_S_DN_CN}x.log" \
"%t %h %{SSL_CLIENT_S_DN_CN}x %{SSL_PROTOCOL}x %{SSL_CIPHER}x %H \"%r\" %b"

Có thể lấy thứ gì đó giống như macro đang được thực thi cho mọi yêu cầu để tôi có thể tạo các tệp nhật ký riêng cho mọi người dùng không?

CHỈNH SỬA:

Tôi hiện có một giải pháp tạm thời bằng cách sử dụng "nhật ký đường ống" như thế này:

conf trang web apache:

Nhật ký tùy chỉnh "|/usr/local/bin/apache_logger" "%t %h %{SSL_CLIENT_S_DN_CN}x %{SSL_PROTOCOL}x %{SSL_CIPHER}x %H \"%r\" %b"

tập lệnh bash nằm ở /usr/local/bin/apache_logger:

#!/bin/bash

trong khi đọc STDIN
làm

  # định dạng: [DẤU THỜI GIAN] IP TÊN NGƯỜI DÙNG TLS GIAO THỨC CYPHER KÍCH THƯỚC "YÊU CẦU"
  DẤU THỜI GIAN=$(echo "$STDIN" | cut -d" " -f1-2)
  IP=$(echo "$STDIN" | cut -d" " -f3)
  USER=$(echo "$STDIN" | cut -d" " -f4)
  TLS=$(echo "$STDIN" | cut -d" " -f5)
  CYPHER=$(echo "$STDIN" | cut -d" " -f6)
  GIAO THỨC=$(echo "$STDIN" | cut -d" " -f7)
  YÊU CẦU=$(echo "$STDIN" | cut -d" " -f8-10)
  SIZE=$(echo "$STDIN" | cut -d" " -f11)

  echo "$TIMESTAMP $IP $USER $TLS $CYPHER $PROTOCOL $REQUEST $SIZE" >> /var/log/apache2/by_user/$USER.log

xong
thoát 0

Điều này dường như làm việc như mong đợi cho bây giờ. Tuy nhiên, sẽ thật tuyệt nếu điều này có thể được thực hiện mà không cần các cuộc gọi tập lệnh bên ngoài đắt tiền.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.