لاگ زدن پشت صحنه
EngRajabi opened this issue · 7 comments
سلام پروژه که بالا میاد همه چی کار میکنه بدون مشکل. اما من متوجه این موضوع شدم که پروژه پشت صحنه مقدار خیلی زیادی لاگ میزنه.
به نظر میاد job پشت صحنه داره لاگ میکنه اما من جابی ندیدم داخل پروژه . این مورد مورد به چی هست ؟
بله متوجه هستم که با تغییر Loglevel به Error مشکل لاگ زیاد حل میشه. میخواستم دلیل لاگ ها رو پیدا کنم
يكسريها كه توسط خود ASP.NET Core لاگ ميشه. مابقي رو بايد باتوجه به منبع آن بررسي كرد. شايد اگر مورد مدنظر لاگ شده را دقيقتر عنوان كنيد، بهتر بشود پاسخ داد.
شما این سناریو رو در نظر بگیرید
من پنل رو روی سیستم خودم آوردم بالا با kestrel . پنل هم بالا اومد موفق
توی 2 دقیقه 10788 تا لاگ زد توی دیتابیس و همچنان داشت اضافه میشد. در حالی که من اصلا با پنل کار نکردم و فقط بالا آورده بودمش. به نظر می اومد پشت صحنه داره اتفاقی می افته یا کار خاصی میکنه.
همه لاگ ها هم از نوع Information Debug هستند.
چند نمونه لاگ
SaveChanges completed for 'MsSqlDbContext' with 1975 entities written to the database.
The 'AppLogItem' entity with key '{Id: 2466}' tracked by 'MsSqlDbContext' changed state from 'Added' to 'Unchanged'.
Disposing transaction.
Closed connection to database 'TestASPNETCore70100IdentityDb' on server '10.1.16.47' (1ms).
Closing connection to database 'TestASPNETCore70100IdentityDb' on server '10.1.16.47'.
Committed transaction.
A data reader for 'TestASPNETCore70100IdentityDb' on server '10.1.16.47' is being disposed after spending 2ms reading results.
Executed DbCommand (3ms) [Parameters=[@p0='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36' (Size = 1000), @p1='::1' (Size = 255), @p2=NULL (DbType = Int32), @p3='2023-02-01T06:23:26.1522520Z' (Nullable = true), @p4='2', @p5='Information' (Size = 4000), @p6='Microsoft.AspNetCore.Hosting.Diagnostics' (Size = 4000), @p7='Request finished HTTP/1.1 GET http://localhost:8060/favicon.ico - - - 200 32038 image/x-icon 16.7168ms' (Size = 4000), @p8=NULL (Size = 1000), @p9=NULL (Size = 255), @p10=NULL (DbType = Int32), @p11=NULL (DbType = DateTime2), @p12='[ { "Key": "ElapsedMilliseconds", "Value": 16.7168 }, { "Key": "StatusCode", "Value": 200 }, { "Key": "ContentType", "Value": "image/x-icon" }, { "Key": "ContentLength", "Value": 32038 }, { "Key": "Protocol", "Value": "HTTP/1.1" }, { "Key": "Method", "Value": "GET" }, { "Key": "Scheme", "Value": "http" }, { "Key": "Host", "Value": "localhost:8060" }, { "Key": "PathBase", "Value": "" }, { "Key": "Path", "Value": "/favicon.ico" }, { "Key": "QueryString", "Value": "" } ]' (Size = 4000), @p13='/favicon.ico' (Size = 4000)], CommandType='Text', CommandTimeout='180'] SET IMPLICIT_TRANSACTIONS OFF; SET NOCOUNT ON; INSERT INTO [AppLogItems] ([CreatedByBrowserName], [CreatedByIp], [CreatedByUserId], [CreatedDateTime], [EventId], [LogLevel], [Logger], [Message], [ModifiedByBrowserName], [ModifiedByIp], [ModifiedByUserId], [ModifiedDateTime], [StateJson], [Url]) OUTPUT INSERTED.[Id] VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13);
Created DbCommand for 'ExecuteReader' (1ms).
اينها لاگهاي استاندارد همان ASP.NET Core و همچنين خود EF-Core هستند كه با تغيير سطح لاگ به بالاتر از debug و info يعني مثلا warning ديگر لاگ نخواهند شد. به همين جهت براي production بهتر است از سطح لاگ Warning استفاده كنيد.
تغییر LogLevel پاک کردن صورت مسئله هست.
ممنون
مسالهاي وجود نداره كه نياز به پاك كردن داشته باشه. تمام اين سيستمها و اين كتابخانهها، داراي سيستم لاگ توكار هستند. اين سيستم لاگ را براي كارهاي ديباگ داخلي خودشان دارند. مرحله به مرحله را لاگ ميكنند جهت ديباگ. اين نشان وجود مساله يا مشكلي نيست. سطح info و يا debug هم براي همين منظور هست. اطلاعات بيشتر