You cannot delete the debug logs natively in Apex code. But you can use Rest DELETE endpoint to delete debug logs.
I have created a utility code to delete debug logs that way, you can refer it.
The only limitation is
- It can delete only 100 in 1 iteration(You can use composite API to bulkify it)
It creates a new debug log after execution
List <Apexlog> loglist = [Select Id from Apexlog limit 100]; for(Apexlog al: loglist){ Http h = new Http(); HttpRequest req = new HttpRequest(); req.setEndpoint(Url.getOrgDomainUrl().toExternalForm() + '/services/data/v44.0/sobjects/Apexlog/'+al.Id); req.setMethod('DELETE'); req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId()); HttpResponse res = h.send(req); System.debug(res.getStatusCode()); } System.debug('loglist'+loglist);
If you are calling this method from lightning component, your Session ID wont be api enabled. Thus you have to use named credentials .
Src: https://salesforce.stackexchange.com/a/183692/19118