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