2010-06-07 24 views
24

Làm thế nào để chèn một dòng mới trong khi sử dụng error_log() trong phpxuống dòng trong error_log trong php

Tôi cố gắng để sử dụng <br>\n nhưng những người không làm việc.

+4

tôi sẽ không làm điều đó. Tôi hy vọng rằng mọi dòng trong nhật ký lỗi là một mục duy nhất. Việc phát tán thư trên hai hoặc nhiều dòng sẽ phá vỡ điều này. – Gumbo

Trả lời

45

Sử dụng dấu ngoặc kép khi đưa thông báo lỗi:

error_log("This is a two lined message. \nThis is line two."); 

nên làm việc.

error_log('This is a one lined message. \nThis is the same line still.'); 

sẽ không hoạt động: hãy chú ý đến dấu nháy đơn.

+0

Bạn chưa đưa ra tham số thứ 2 và thứ 3 (tên của tệp nhật ký lỗi) – Satish

+7

Vì vậy? Các tham số khác là tùy chọn. Có lẽ bạn nên xác định những gì bạn muốn đạt được, bởi vì AFAICT bạn vừa được đưa ra giải pháp cho vấn đề của bạn. – wimvds

+0

@Satish, xin lỗi vì nhận xét muộn, nhưng, nếu chúng tôi không đặt bất kỳ tham số thứ hai và thứ ba, nhật ký được ghi vào tệp nhật ký lỗi mặc định của php: 'php_errors.log' được hoan nghênh. – Pupil

3

Tôi thỉnh thoảng gặp sự cố này, nhưng một số phiên dịch PHP nhất định không phải lúc nào cũng chơi công bằng với số \n của riêng họ. Giải pháp xấu xí của tôi yêu cầu thêm mã ASCII thô cho dòng mới, \10, dường như thực hiện thủ thuật. Vì vậy hãy thử \n\10:

error_log("\n\10\n\10".$this->db->last_query()."\n\10\n\10"); 

Đó là khổ sở tìm kiếm mã, do đó bạn có thể muốn quấn này vào chức năng của riêng bạn ... nhưng nó làm cho các bản ghi lỗi trông đẹp hơn rất nhiều nếu bạn muốn một cái gì đó để nổi bật.

Tôi cũng không biết tại sao điều này hoạt động tốt hơn ... không quan tâm đủ để tìm hiểu, nhưng nếu ai đó biết lý do tại sao, thật tuyệt khi nghe.

21

PHP_EOL quản lý dòng mới trên nhiều nền tảng:

error_log("Error message".PHP_EOL, 3, 'error.log'); 
+1

Đẹp nhất, hoạt động tốt với PHP đang chạy trên IIS. \ 10 đã không làm việc nhưng điều này không. – Jordi

0

Khi gỡ lỗi, nếu bạn muốn chắc Lỗi dòng Log của bạn nổi bật khi bạn đang xem nhật ký 'tail -f', tôi sử dụng một chức năng nhỏ như thế này để làm cho dòng nổi bật và dễ đọc.

Chỉ cần ném vào một số khoảng trắng và cụm từ phổ biến như 'CUSTOM_LOG' cho các mục đích sau này.

highlight_error_log('Msg here'); 

function highlight_error_log($str){ 
    error_log('CUSTOM_LOG:   ' . $str . '   '); 
} 
16

Như đã đề cập trước đó, bạn có thể sử dụng PHP_EOL hoặc sử dụng dấu ngoặc kép để xuất một dòng mới vào tệp nhật ký của mình.

Dù sao, khi sử dụng bảng điều khiển Linux để gỡ lỗi ứng dụng, lệnh tail sẽ hiển thị dòng mới là \\\\n.

Giải pháp đơn giản là sử dụng sed để thay thế \\\\n với \\n:

tail -f file | sed 's/\\n/\n/g' 

Xem câu trả lời này:
https://serverfault.com/a/126409

+0

và cách sử dụng nó với grep? – BIOHAZARD

+0

Đây thực sự là bằng chứng cho thấy error_log không xuất hiện đúng các ký tự dòng mới. đuôi không tự động thoát khỏi bất cứ điều gì. Đây là điều duy nhất giải quyết vấn đề cho tôi. – Phil

Các vấn đề liên quan